用户登录后,我希望他们被重定向到 /users/2 或 users/44,就像普通资源一样。(这样管理员只需知道他们的 id 就可以轻松查看任何用户的个人资料页面。)
我不知道我的路线文件中发生了什么。当用户登录时,我可以在日志中看到它正确地进行了身份验证,并且我的 application_controllerafter_sign_in_path_for
被调用。
但这是我尝试重定向到 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 天。