路由提交按钮到自定义路径

时间:2013-12-18 19:53:04

标签: ruby-on-rails

我正在尝试将提交按钮路由到特定路径(页面),但我相信我的语法不准确。

这就是我现在所拥有的:

<%= submit_tag('Next (Step 2 of 3)'), customer_index_path %>

我收到错误:

/Users/anmareewilliams/RailsApps/GroupOrderingCopy/app/views/products/index.html.erb:18: syntax error, unexpected ',', expecting ')'
...bmit_tag('Next (Step 2 of 3)'), customer_index_path );@outpu...
...  

我也尝试了这个:

<%= submit_tag'Next (Step 2 of 3)', customer_index_path %> 

并且在文本编辑器中没有出现任何错误,但是出现了一个Rails错误:

undefined method `stringify_keys' for "/customer/index":String

如何完成将提交路由到特定路径?

2 个答案:

答案 0 :(得分:5)

您未在submit_tag中加入path。您需要在form的{​​{1}}。

中定义路径
action

这应该将表单提交给<%= form_tag(customer_index_path) do %> <%= submit_tag 'Next (Step 2 of 3)' %> <% end %>

<强>更新

要向customer_index_path提交GET请求,您需要更新#customer_index_path声明,如下所示:

form_tag

答案 1 :(得分:2)

路由的路径必须包含在参数列表中,因此在代码的第一次迭代中,请确保括号中包含两个参数:

<%= submit_tag('Next (Step 2 of 3)', options) %>

或者,您可以在没有括号的情况下将参数传递给函数。确保submit_tag和第一个参数之间有空格:

<%= submit_tag 'Next (Step 2 of 3)', options %> 

<强>更新

关于您传递给submit_tag的第二个参数,the docs说出以下内容:

 submit_tag(value = "Save changes", options = {}) 

以下是有效选项:

  • :data - 此选项可用于添加自定义数据属性。
  • :disabled - 如果为true,则用户将无法使用此输入。
  • 任何其他键都会为标记创建标准HTML选项。

请注意,路径不是有效值。相反,路径应作为参数传递给开头form_tag助手。

同样,我假设 - 因为你没有使用form_for - 你没有这个控制器的足智多谋的路线。因此,您需要为customer_index_path

创建自定义路线
# config/routes.rb
get '/customers', to: 'customers#index', :as 'customers_index'