Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 将资源显示页面路由到通用url_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

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就是要登录的用户吗?非常感谢,这很好。这么简单,我想错了。