我在Devise遇到了一个奇怪的路由问题。最近,我通过Devise为我的Rails应用程序添加了电子邮件确认,并试图设置确认/新操作,以便用户可以在注册后重新发送电子邮件确认。
下面是我目前为Devise用户身份验证设置的路由:
devise_for :users do
match 'users/logout' => 'devise/sessions#destroy'
end
在运行rake路由后,这就是我想要的相关新确认路径:
new_user_confirmation GET /users/confirmation/new(.:format) {:action=>"new", :controller=>"devise/confirmations"}
我的新确认电子邮件操作链接如下:
<%= link_to "Didn't receive unlock instructions?", new_user_confirmation %>
点击此链接将我重定向到url /users/confirmation/new.user
,但我收到路由错误:
路由错误
没有路线匹配{:controller=>"设计/锦标赛",:action=>"results"}
这对我来说很奇怪,因为Devise与我的锦标赛控制器无关,也没有在任何与设计相关的功能中引用过我的比赛控制器。
我使用的是Rails 3.1和Devise 2.1.2
问题实际上源于我的应用程序在所有地方的布局。到目前为止,我必须处理的唯一设计视图是registration视图和sign_up视图,默认情况下这两个视图都不会呈现布局。很自然,我假设这个页面也不会,所以我不知道要注意它。
在我的应用程序布局中,我有一个链接到上述:controller=>"devise/tournaments", :action=>"results"
的路由,只需将其更改为命名路由tournament_results_path
就解决了我的问题。