如何在触发:onchange事件时调用ruby方法(ruby on rails 4)

How to call a ruby method when :onchange event is triggered (ruby on rails 4)?

本文关键字:ruby 方法 on rails 调用 事件 onchange      更新时间:2023-09-26

我对ruby on rails很陌生。。。在我的_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

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应用程序响应该请求。