一旦登录到我的应用程序,我就会将用户发送到标准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 中)。