当我的用户登录时,我希望他们默认为他们自己的“显示”页面,因为我不希望用户列表可见。所以要做到这一点,我已经更改了默认的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
......这很有道理。我正在使用配备设备的控制器,所以我的问题是,如何挂钩密码更改并将用户发送到他们的显示页面?我是否应该只能编辑def show来说
def show
@user = User.find(params[:id]) || current_user
还是我需要修改
root :to => "users#show"
反映current_user的id,假设devise将用户自动重新登录....或者它是否从未将其注销......?
谢谢
答案 0 :(得分:0)
你这样做;
首先,更新您的路由文件以使用Devise的状态,以便对经过身份验证的用户进行不同的处理
authenticated :user do
root :to => "users#show"
end
unauthenticated :user do
devise_scope :user do
get "/" => "devise/sessions#new"
end
end
现在确保当用户#show发生时,查找current_user并用于打击用户#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
一切都很好!
由于