用户登录后,我希望将它们重定向到/ users / 2或users / 44,就像普通资源一样。 (这样管理员只需知道他们的身份就可以轻松查看任何用户的个人资料页面。)
我不知道我的路线文件中发生了什么。当用户登录时,我可以在日志中看到它正确进行身份验证,并且我的application_controller after_sign_in_path_for
被调用。
但是当我尝试redirect_to user_path(current_user)时,这是我得到的错误。
No route matches {:action=>"show", :controller=>"users", :user_id=>11}
我的config/routes.rb
devise_for :users, :path_names => {:sign_in => 'signin', :sign_out => 'signout', :sign_up => 'signup' }
devise_scope :user do
get "signin", :to => "devise/sessions#new"
get "signout", :to => "devise/sessions#destroy", via: :delete
get "signup", :to => "devise/registrations#new"
end
resources :users do
member do
get 'settings', to: 'users#edit'
end
end
我的application_controller.rb
class ApplicationController < ActionController::Base
...
def after_sign_in_path_for(resource)
redirect_to user_path(:user_id=>current_user.id)
end
end
resource :users
块是否应该负责创建用户显示路径?我的users_controller.rb中有一个show方法。请帮助,我一直试图让它工作2天。
答案 0 :(得分:0)
我的问题是我在{_ 1}中使用了after_sign_in_path(resource)方法,而不是只返回路径:
redirect
是执行此操作的正确方法。