Button_to链接导致路由错误

时间:2014-12-19 08:23:52

标签: ruby-on-rails ruby-on-rails-4 routes button-to

我试图在我的rails应用程序上添加一些光滑的按钮作为链接。但是,在我尝试这样做时,我遇到了一个奇怪的问题。我试图按如下方式添加链接按钮:

<%= button_to( "New", :action => "new", :controller => "registrations") %>

这会产生一个很好的新按钮,可以将我的用户定向到sign_up页面。

在这里它变得奇怪:当我点击按钮时,我被路由到http://localhost:3000/users/sign_up并收到以下错误:

  

没有路线匹配[POST]&#34; / users / sign_up&#34;

但这根本不是真的。事实上,我可以突出显示那个带给我错误的网址,复制它并将其粘贴到一个新标签中,然后加载就可以了。

绝对清楚,这里是rake routes

的路径
new_user_registration GET    /users/sign_up(.:format)       registrations#new

这里可能会发生什么?

任何想法都表示赞赏。

2 个答案:

答案 0 :(得分:3)

你的路由期望方法得到button_to`不应该发送GET请求的地方, 这就产生了问题。

你必须做以下事情之一

1.将button_to更改为link_to

<%= link_to( "New", :action => "new", :controller => "registrations") %>

2.添加:method => :get

<%= button_to( "New", {:action => "new", :controller => "registrations"}, :method => :get) %>

答案 1 :(得分:1)

默认情况下,单击按钮会向服务器发送POST请求。您应该更改此行为以发送GET

<%= button_to('New', {action: 'new', controller: 'registrations'}, method: :get) %>