Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.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 轨道:不同的布局_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 轨道:不同的布局

Ruby on rails 轨道:不同的布局,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,在我的应用程序中,我想在用户登录和未登录时使用不同的布局 应用程序控制器: class ApplicationController < ActionController::Base # Prevent CSRF attacks by raising an exception. # For APIs, you may want to use :null_session instead. protect_from_forgery with: :exception layout

在我的应用程序中,我想在用户登录和未登录时使用不同的布局

应用程序控制器:

class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception

  layout :determine_layout

  private

    def determine_layout
      user_signed_in? ? 'application' : 'landing'
    end

end
class ApplicationController
但是这个代码不起作用:布局没有改变。你能想出这个原因吗?还是我犯了一些错误


谢谢

将作为评论撰写,但在此处处理将更容易:

根据,您可以确定它是否基于
designe\u controller

class ApplicationController < ActionController::Base
  layout :layout_by_resource

  protected

  def layout_by_resource
    if devise_controller?
      "layout_name_for_devise"
    else
      "application"
    end
  end
end
class ApplicationController
这将允许您在用户未登录的情况下将其指向
会话#landing
,这意味着在自定义设计会话控制器中创建新操作


这将使确定他们是否登录的过程干涸(如果他们没有登录,他们可以从Desive的
会话
注册
控制器中看到静态视图

code看起来正常,这是您一直使用的布局?当用户登录时,它是
应用程序
,当用户没有登录布局时,它是
登录
正常,因此您的方法可以工作…检查
是否使用r\u已登录?
注销时返回false。