将资源显示页面路由到通用URL

时间:2012-09-24 13:20:56

标签: ruby-on-rails ruby-on-rails-3

登录我的应用后,我正在向用户发送标准users#show页面。

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

但是,显示/users/50的网址不是显示通用/welcome,而是显示<%= @user.name %>。我仍然需要访问视图中的用户数据,因此我可以使用{{1}}等内容。

那是直截了当的吗?

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才能使其正常工作(因为没有关于用户的信息存储在欢迎网址中)。