在Rails中使用link_to发送表单参数

时间:2013-09-09 14:20:47

标签: javascript ruby-on-rails ruby-on-rails-4

我有一个结帐表单,其中包含一个select字段,用于调用自定义操作,该操作通过javascript以正确的交付金额更新页面。

=link_to 'Update delivery', store_orders_delivery_path(?????),
 method: 'POST', remote: :true

表单有一个“位置”字段

= f.select :location, ["country1","country2","country3"]

如何在link_to中将所选位置作为参数发送?

3 个答案:

答案 0 :(得分:2)

我理解你的问题的方式是:

你有一个表单,在提交时会做一些事情。在这个表单中你想要一个链接,它只会从这个表单发送一个字段到另一个动作,并获得一些js作为响应更新表单。

如果是这样,执行此操作的正确方法是在更改选定位置时发送ajax请求。不需要链接,您将创建更好的用户体验。从事件处理程序中,您可以轻松访问所选值并将其与请求一起发送。

更新:

简而言之,我会做的事情:

  1. 摆脱这个链接。
  2. 使用javascript(建议使用CoffeScript)为此select字段创建一个事件处理程序(jQuery:$('#<modelname>_location').change(function() {handler here})
  3. 在处理程序内部,从字段(selected_value = $(this).find('option:selected').val())(或最后的值()获取值,总是让这两个搞砸了)
  4. 通过js和selected_value一起发送ajax请求。 (http://api.jquery.com/jQuery.ajax/
  5. 这不是很多代码要编写,但应该做你想要的+它会为用户节省一次点击(他可能没有意识到这是需要的,弄糊涂等等。)

答案 1 :(得分:0)

它应该已经在您的控制器中可用,如:

params[:location]

答案 2 :(得分:-1)

= f.select :location, options_for_select(["country1","country2","country3"]), params[:location]