Ruby on rails 将资源显示页面路由到通用url
一旦登录到我的应用程序,我会将用户发送到标准的Ruby on rails 将资源显示页面路由到通用url,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,一旦登录到我的应用程序,我会将用户发送到标准的users#show页面 def show @user = User.find(params[:id]) end 但是,与显示/users/50的URL不同,我希望它只显示一个通用的/welcome。我仍然需要访问视图中的用户数据,以便使用之类的功能 这很简单吗?当然很简单。如果@user是登录的用户,那么您必须将会话cookie存储在某处。只需使用它来设置用户。假设您的会话cookie存储了用户名,您将有如下内容: def welcome
users#show
页面
def show
@user = User.find(params[:id])
end
但是,与显示/users/50
的URL不同,我希望它只显示一个通用的/welcome
。我仍然需要访问视图中的用户数据,以便使用
之类的功能
这很简单吗?当然很简单。如果
@user
是登录的用户,那么您必须将会话cookie存储在某处。只需使用它来设置用户。假设您的会话cookie存储了用户名,您将有如下内容:
def welcome
@user = User.find_by_name(session[:user])
# other controller code
end
def welcome
@user = current_user
# other controller code
end
通常您不会像这样直接处理会话cookie,而是在ApplicationController
中设置current\u user
,并参考它。设置过滤器前的是一种很好的方法,这样所有控制器中都可以使用当前用户
:
before_filter :initialize_user
def initialize_user
@current_user = User.find_by_name(session[:user]) if session[:user]
end
然后您可以这样设置@user
:
def welcome
@user = User.find_by_name(session[:user])
# other controller code
end
def welcome
@user = current_user
# other controller code
end
还有其他方法可以做到这一点,但无论你做什么,你都需要在某个地方设置一个会话cookie,这样才能工作(因为欢迎url中没有存储有关用户的信息)。user就是要登录的用户吗?非常感谢,这很好。这么简单,我想错了。