如何在以下情况下调用ruby方法:触发onchange事件(ruby on rails 4)?

时间:2016-03-26 23:48:34

标签: javascript ruby-on-rails ruby

我对铁轨上的红宝石很新... 在我的_form.html.erb我有一个collection_select字段,该字段是从名为Product的模型填充的。产品的表格列为id, name, and price。一旦我从集合中选择了一个项目(产品),我想用所选产品的价格填充一个文本字段。

到目前为止,我有以下代码IOT在选择项目时触发事件:

<%= collection_select( :warehouse, :product_id, Product.all, :id, :name, {}, {:onchange => "alert('Hello World');"} )%>

如何调用ruby方法,让我使用所选产品的相应价格填充text_field?

对于我正在考虑的方法......

def set_price
      @price = Product.find(params[:id]).price
end

1 个答案:

答案 0 :(得分:0)

erb片段

<%= collection_select( :warehouse, :product_id, Product.all, :id, :name, {}, {:onchange => "alert('Hello World');"} )%>

生成像这样的html片段

<select name="warehouse[product_id]" onchange="alert('Hello World');">
  <option value="1">Product 1</option>
  <option value="2">Product 2</option>
  ...
</select>

所以onchange的内容只是一段在浏览器上运行的javascript。没有办法让onchange直接运行ruby代码。您所能做的就是在onchange中发送一个AJAX请求,让您的Rails应用程序响应该请求。