有没有办法在routes.rb中访问当前用户?我想要这样的映射:
match /profile => redirect("/profiles/{current_user.name}")
env['warden']
似乎没有设置,因此我无法访问warden.user.name
。
答案 0 :(得分:7)
不确定是否可行。但是,您可以使用控制器:
def profile
if signed_in?
redirect_to user_profile_path(current_user)
else
redirect_to root_url
end
end
答案 1 :(得分:5)
扩展用户1136228的答案:
get '/profile', to: redirect { |params, request|
me = request.env["warden"].user(:user)
me ? ('/profiles/' + me.name) : '/'
}
答案 2 :(得分:3)
有两种可能性。 如果你正在使用设计,你可以使用像这样的监护人:
current_user = request.env["warden"].user(:user)
或没有监狱长
User.find_by_id(request.session[:user_id])
如果您将用户的ID存储在会话'用户ID
中