0

一旦登录到我的应用程序,我就会将用户发送到标准users#show页面。

def show
  @user = User.find(params[:id])
end

但不是显示的 URL,/users/50我希望它只显示一个通用的/welcome. 我仍然需要访问视图中的用户数据,以便可以使用<%= @user.name %>.

那是直截了当的吗?

4

1 回答 1

1

当然,这很简单。如果@user是登录用户,那么您必须在某处存储会话 cookie。只需使用它来设置用户。假设您的会话 cookie 存储了用户名,您将拥有如下内容:

def welcome
  @user = User.find_by_name(session[:user])
  # other controller code
end

通常你不会像这样直接处理会话cookie,而是设置current_userApplicationController引用它。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 中)。

于 2012-09-24T14:00:55.453 回答