如果我的用户已登录,如何包含不同的文件?

How do I include a different file if my user is logged in?

我正在使用 Rails 4.2.5。我的“app/views/layouts/application.html.erb”文件中有这一行……​​

<%= yield %>

如果用户已登录,我想显示页面“./app/views/user_objects/index.html.erb”中的内容,但如果用户未登录,我想显示页面中的内容页面“app/views/pages/_welcome.html.erb”。我不知道如何设置。在我的 config/routes.rb 文件中我有

constraints lambda { |req| !req.session[:user_id].blank? } do
  root :to => 'user_objects#index', as: "dashboard"
end

root to: 'pages#index'

但这会一直显示“./app/views/user_objects/index.html.erb”文件,即使用户未登录也是如此。我需要添加(或删除)什么才能允许如果用户未登录,我可以显示正常的欢迎页面内容吗?

我会做一些不同的事情。在我的 config/routes.rb 中,我只有通常的

root 'pages#index'

然后我将在 app/controllers/pages_controller.rb 处更改我的 索引方法

def index
  if logged_user? 
    render 'user_objects/index'
  end
end

然后我会把所有这些逻辑放在一起说明用户是否登录 logged_user?方法喜欢

def logged_user?
  !session[:user_id].blank?
end

当然,还有其他方法可以做到这一点。但请始终牢记 KISS Principle

如果你真的想了解所有的渲染过程,最好关注一下http://guides.rubyonrails.org/layouts_and_rendering.html