登录我的应用后,我正在向用户发送标准users#show
页面。
def show
@user = User.find(params[:id])
end
但是,显示/users/50
的网址不是显示通用/welcome
,而是显示<%= @user.name %>
。我仍然需要访问视图中的用户数据,因此我可以使用{{1}}等内容。
那是直截了当的吗?
答案 0 :(得分:1)
当然这很简单。如果@user
是登录用户,那么您必须在某处存储会话cookie。只需使用它来设置用户。假设您的会话cookie存储了用户的名字,您将拥有以下内容:
def welcome
@user = User.find_by_name(session[:user])
# other controller code
end
通常你不会像这样直接处理会话cookie,而是在current_user
中设置ApplicationController
并参考。 before_filter
是设置它的好方法,因此current_user
在所有控制器中都可用:
before_filter :initialize_user
def initialize_user
@current_user = User.find_by_name(session[:user]) if session[:user]
end
然后你可以像这样设置@user
:
def welcome
@user = current_user
# other controller code
end
还有其他方法可以做到这一点,但无论你做什么,你都需要在某处设置会话cookie才能使其正常工作(因为没有关于用户的信息存储在欢迎网址中)。