我最近转向设计我的身份验证例程。但是,我仍然遇到一些问题,主要是路由问题。用户登录后,我有路由:
devise_for :users
namespace :user do
root :to => "town#index"
end
登录后,我被重定向到城镇控制器。我有这条线:
<%= link_to raw("<p class='menu_head'>#{t('menu.inventory')}</p>"), :controller => "character" %>
这实际上适用于restful身份验证,但是为了设计工作,我必须将控制器指定为“/ character”,否则我得到:
No route matches {:controller=>"user/character"}
虽然这条路线不正确。如何解决这个问题?
而且,我认为这个是由设计再次造成的。当一个新用户注册时,设计会将它们重定向到town #index,因为如果他们已经登录就会发生这种情况。当发生这种情况时,由于某种原因,current_user没有被初始化。这只发生在注册后,而不是用户登录时。我很确定我在设计方面做错了。
答案 0 :(得分:0)
您应该使用路由助手而不是选项来访问此控制器。在路径文件中定义路径助手并改为使用它。这样,您将始终获得正确的URL。
目前,您的应用程序正在向您发送users/town
,因为这就是您告诉它的内容。登录的网址为/users/sign_in
,通过传递:controller
,您说“转到/users/town
。如果您使用的是命名路由,则不会发生这种情况。