有什麼方法可以訪問routes.rb中的當前用戶嗎?我想這樣的映射:在routes.rb中設計current_user
match /profile => redirect("/profiles/{current_user.name}")
env['warden']
似乎並不成立,所以無法訪問warden.user.name
。
有什麼方法可以訪問routes.rb中的當前用戶嗎?我想這樣的映射:在routes.rb中設計current_user
match /profile => redirect("/profiles/{current_user.name}")
env['warden']
似乎並不成立,所以無法訪問warden.user.name
。
要擴大user1136228的回答:
get '/profile', to: redirect { |params, request|
me = request.env["warden"].user(:user)
me ? ('/profiles/' + me.name) : '/'
}
不知道這是可能的。但是,您可以使用控制器:
def profile
if signed_in?
redirect_to user_profile_path(current_user)
else
redirect_to root_url
end
end
這是兩種可能性。 如果您使用的設計,你可以使用監獄長像這樣:如果你存儲用戶的ID在會話的
current_user = request.env["warden"].user(:user)
或不監獄長
User.find_by_id(request.session[:user_id])
:user_id說明
我不明白這是如何工作在routes.rb。 – mahemoff 2016-01-11 19:02:24
您可以在routes.rb中添加constaraint – user1136228 2016-02-08 08:21:51
謝謝,我已經這樣做了,這是一個體面的解決方法,但獲得重複當您有多個與當前用戶相關的便捷網址(edit_profile_path等)時。 – mahemoff 2011-12-26 15:15:19
一切都是可能的和可實現的。 – sidney 2016-07-10 12:41:49