【问题标题】:Rails update form field value based on collection_select valueRails 根据 collection_select 值更新表单字段值
【发布时间】:2016-06-22 15:54:43
【问题描述】:

我对 Rails 比较陌生,我一直在论坛上搜索似乎永远存在的问题,但我还没有找到解决问题的方法。这可能只是由于我作为开发人员缺乏经验,但如果任何人都可以提供任何帮助,我将不胜感激。

我正在构建一个具有轮次模型的应用程序,并且每一轮都有许多投资者(这是一个单独的模型)。此外,还有一个股票模型,其中包含有关投资者购买的股票类型的各种数据。模型之间的所有必要关系都已建立。

当我创建一个新投资者时,我试图根据已选择的股票类型自动填写表格。这是表格:

//app/views/investors/new.html.erb
<%= form_for(@investor) do |f| %>
  <%= render 'shared/error_messages', object: f.object %>

  <%= f.label :security_name %>
  <%= f.collection_select :stock_type, Stock.all, :id, :security_name, prompt: true, class: 'form-control' %>

  <%= f.label :share_price %>
  <%= f.number_field :share_price, :readonly => true, class: 'form-control'%>

  <%= f.submit "Add Investor", class: "btn btn-primary" %>
<% end %> 

表单中的第一个字段是一个下拉框,允许用户选择投资者购买的股票类型。这是正常运行的。

我无法弄清楚(以及我需要帮助)的是如何自动将 number_field 的值设置为所选股票类型的股价。我知道它需要某种形式的 Javascript,但我尝试过的所有东西都没有产生功能输出。

我遇到的部分问题是,当我阅读对其他人问题的回复时,我不完全确定将建议的代码放在哪里 - 所以这些信息也会有所帮助。

使用 Rails 4.2.2 版

【问题讨论】:

    标签: javascript ruby-on-rails forms


    【解决方案1】:

    假设 share_price 的逻辑很简单。我只会使用一个数据字段将该值添加到选择的所有标签中。

    options_for_select([["GOOGLE", "1", {data: {price: "25.6"}}], ["Apple", "2", , {data: {price: "25.6"}}], ...])

    然后在表单上方的 javascript 片段中或在适当的investor.js.coffee 文件中。

    $("#investor_stock_type").change () -> $("#investor_share_price").value = $(this).data("price")

    除了潜在的语法错误。这应该会让你接近你想要的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-27
      • 1970-01-01
      • 1970-01-01
      • 2020-02-14
      • 2016-09-20
      • 2021-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多