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

时间:2016-03-06 15:46:45

标签: ruby-on-rails include logged

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

<%= yield %>

如果用户已登录,我想显示页面“./app/views/user_objects/index.html.erb”中的内容,但如果不是,我想显示页面中的内容“应用程序/视图/页/ _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”文件。我需要添加(或删除)以允许我如果用户未登录,则显示正常的欢迎页面内容?

1 个答案:

答案 0 :(得分:0)

我这样做有点不同。在我的 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