我正在尝试将提交按钮路由到特定路径(页面),但我相信我的语法不准确。
这就是我现在所拥有的:
<%= 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
如何完成将提交路由到特定路径?
答案 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 = {})
以下是有效选项:
请注意,路径不是有效值。相反,路径应作为参数传递给开头form_tag
助手。
同样,我假设 - 因为你没有使用form_for
- 你没有这个控制器的足智多谋的路线。因此,您需要为customer_index_path
:
# config/routes.rb
get '/customers', to: 'customers#index', :as 'customers_index'