[英]Route user to users#show after devise password change
当我的用户登录时,我希望他们默认使用自己的“显示”页面,因为我不希望看到用户列表。 为此,我更改了默认的after_sign_in,如下所示:
def after_sign_in_path_for(resource)
user_path(current_user)
end
效果很好。 更改密码后出错。 我需要修改根路径,以便在更改后进入显示页面
root :to => "users#show"
..但是现在,显然,我没有:id,所以我得到了
ActiveRecord::RecordNotFound in UsersController#show
Couldn't find User without an ID
...很有意义。 我正在使用devise随附的控制器,所以我的问题是,如何挂钩密码更改并将用户发送到其显示页面? 我应该能够编辑def show说
def show
@user = User.find(params[:id]) || current_user
还是我需要修改我的
root :to => "users#show"
以反映current_user的ID,假设devise自动将用户重新登录...。还是从未注销过用户...?
谢谢
你是这样做的;
首先,更新您的路由文件以使用Devise的状态,以便对身份验证的用户进行不同的处理
authenticated :user do
root :to => "users#show"
end
unauthenticated :user do
devise_scope :user do
get "/" => "devise/sessions#new"
end
end
现在确保在发生user#show时,将查找current_user并用于解决users#show没有:id的事实
def show
if params[:id].nil? # if there is no user id in params, show current one
@user = current_user
else
@user = User.find(params[:id])
end
都很好!
谢谢
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.