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

我有这段代码:

 "button" %>

哪个工作正常,但当我改成它时,

  "button" %>

我收到这个错误

没有路由匹配[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 / newGET而不是POST ,因此第二行找不到任何路由。

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

您也可以将类发送到link_to,而不是强制button_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