将link_to更改为button_to时,“没有路由匹配[POST]”

时间:2012-09-18 10:37:20

标签: ruby-on-rails button hyperlink

我有这段代码:

<%= link_to "New User", new_user_path, :class => "button"  %><br />

工作正常,但当我将其更改为时,

<%= button_to "New User", new_user_path, :class => "button"  %><br />

我收到此错误

  

没有路线匹配[POST]“/ users / new”

任何帮助都将受到赞赏。

4 个答案:

答案 0 :(得分:30)

Jesus Rodriguez关于POST和GET是正确的,但如果你真的需要按钮,你可以简单地覆盖默认方法:

<%= button_to "New User", new_user_path, :class => "button", :method => :get  %>

答案 1 :(得分:19)

“link_to”正在使用 GET 寻找 / users / new

“button_to”正在使用 POST

寻找 / users / new

如果使用以下方法为控制器创建路径:

resources :user

默认情况下, / users / new GET ,而不是 POST ,因此,第二行找不到任何路线。< / p>

如果您打算将该操作更改为 POST ,我认为您应该忘记它。

答案 2 :(得分:3)

您可以将类发送到link_to,而不是强制button_to使用非默认方法。

<%= link_to "New User", new_user_path, :class => "button" %>

答案 3 :(得分:2)

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