我正在尝试在我的rails应用程序上放置一些光滑的按钮作为链接。 但是,我在尝试这样做时遇到了一个奇怪的问题。 我尝试添加一个链接按钮,如下所示:
<%= button_to( "New", :action => "new", :controller => "registrations") %>
这将产生一个不错的新按钮,用于将我的用户定向到sign_up页面。
这就是它变得奇怪的地方:当我单击按钮时,我被路由到http://localhost:3000/users/sign_up
并收到以下错误:
没有与 [POST] "/users/sign_up" 匹配的路由
但这根本不是真的。 实际上,我可以突出显示导致我出现该错误的URL,将其复制并将其粘贴到新选项卡中,然后加载正常。
为了绝对清楚,这是从rake routes
开始的路径:
new_user_registration GET /users/sign_up(.:format) registrations#new
这里可能发生了什么?
任何想法都值得赞赏。
你的路由期望方法到达哪里,因为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) %>
单击按钮会将POST
请求发送到服务器。您应该更改此行为以发送GET
:
<%= button_to('New', {action: 'new', controller: 'registrations'}, method: :get) %>