我有这段代码:
<%= link_to "New User", new_user_path, :class => "button" %><br />
这个代码运行良好,但当我将其改成如下形式时,
<%= button_to "New User", new_user_path, :class => "button" %><br />
我遇到了这个错误:
No route matches [POST] "/users/new"
非常感谢任何帮助。
我有这段代码:
<%= link_to "New User", new_user_path, :class => "button" %><br />
这个代码运行良好,但当我将其改成如下形式时,
<%= button_to "New User", new_user_path, :class => "button" %><br />
我遇到了这个错误:
No route matches [POST] "/users/new"
非常感谢任何帮助。
Jesus Rodriguez正确关于 POST 和 GET 的区别,但如果你确实需要这个按钮,你可以简单地覆盖默认方法:
<%= button_to "New User", new_user_path, :class => "button", :method => :get %>
"link_to"使用GET请求查找/users/new。
"button_to"使用POST请求查找/users/new。
如果您使用以下方式创建控制器的路由:
resources :user
默认情况下,/users/new 是一个 GET 路由而不是 POST,所以第二行代码找不到任何路由。
如果你考虑将该操作改为 POST,我认为你应该放弃这个想法。
与其强制使用非默认方法的button_to,您也可以将一个类发送到link_to。
<%= link_to "New User", new_user_path, :class => "button" %>
button_to默认为POST,而link_to默认为GET,这就是为什么links_to起作用的原因。您可以强制button_to使用GET:
<%= button_to "New User", new_user_path, :class => "button", :method => :get %>
您可以在这里获取有关button_to选项的更多信息:http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-button_to
<%= link_to "New User", new_user_path, :class => "btn btn-default" %>
- Mike Richards