【问题标题】:Send a form parameter with link_to in Rails在 Rails 中使用 link_to 发送表单参数
【发布时间】:2013-09-09 14:20:47
【问题描述】:

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

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

表单有一个“位置”字段

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

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

【问题讨论】:

  • 表格在哪里?在link_to之外?
  • 表格在“orders#new”上,我不确定你在link_to之外是什么意思

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


【解决方案1】:

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

你有一个表单,它在提交时会做一些事情。在此表单中,您希望有一个链接,该链接将仅将此表单中的一个字段发送到另一个操作,并获取一些 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/)

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

【讨论】:

  • 你有它的 jist,但我不明白你的答案,我的 link_to 是一个 ajax 请求。您的意思是通过 ajax 提交表单吗?
【解决方案2】:

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

params[:location]

【讨论】:

  • 不,我正在调用不同的操作,如果我提交了表单,参数将可用,但我不是
  • 奇怪,我以为这不重要
【解决方案3】:

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

【讨论】:

  • 我在问如何在 link_to 中发送参数
  • 当你提交表单时,:location 将是一个参数。这将导致一个如下所示的 url:http://localhost:3000/foo/store_orders_delivery?location=0 只要f.select:location 形式内,当您提交时,值将是结果 url 中的一个参数
  • 我没有提交表单
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多