一旦登录到我的应用程序,我就会将用户发送到标准users#show页面。
def show
@user = User.find(params[:id])
end
但不是显示的 URL,/users/50我希望它只显示一个通用的/welcome. 我仍然需要访问视图中的用户数据,以便可以使用<%= @user.name %>.
那是直截了当的吗?
一旦登录到我的应用程序,我就会将用户发送到标准users#show页面。
def show
@user = User.find(params[:id])
end
但不是显示的 URL,/users/50我希望它只显示一个通用的/welcome. 我仍然需要访问视图中的用户数据,以便可以使用<%= @user.name %>.
那是直截了当的吗?
当然,这很简单。如果@user是登录用户,那么您必须在某处存储会话 cookie。只需使用它来设置用户。假设您的会话 cookie 存储了用户名,您将拥有如下内容:
def welcome
@user = User.find_by_name(session[:user])
# other controller code
end
通常你不会像这样直接处理会话cookie,而是设置current_user并ApplicationController引用它。Abefore_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 才能使其正常工作(因为没有关于用户的信息存储在欢迎 url 中)。