1

我有一个结帐表单,其中有一个位置选择字段,该字段调用一个自定义操作,该操作通过 javascript 使用正确的交付金额更新页面。

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

表单有一个“位置”字段

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

如何将所选位置作为参数发送到我的 link_to ?

4

3 回答 3

2

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

你有一个表单,它在提交时会做一些事情。在此表单中,您希望有一个链接,该链接仅将一个字段从该表单发送到另一个操作,并获取一些 js 以响应更新表单。

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

更新:

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

  1. 摆脱这个链接。
  2. 使用 javascript(推荐 CoffeScript)为这个选择字段创建一个事件处理程序(jQuery: $('#<modelname>_location').change(function() {handler here})
  3. 在处理程序内部,从字段 ( selected_value = $(this).find('option:selected').val()) 中获取值(或最后的 value() ,总是把这两个搞砸了)
  4. 通过js和selected_value一起发送ajax请求。( http://api.jquery.com/jQuery.ajax/ )

这不是很多代码要写,但应该做你想做的事+它会节省用户一次点击(他可能没有意识到这是必要的,会感到困惑等)

于 2013-09-09T15:17:01.747 回答
0

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

params[:location]
于 2013-09-09T14:27:22.233 回答
-1

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

于 2013-09-09T14:35:36.283 回答