Ruby on rails 特定操作的渲染布局

Ruby on rails 特定操作的渲染布局,ruby-on-rails,ruby,layout,views,Ruby On Rails,Ruby,Layout,Views,这里我有一个有4个动作的控制器,我想将应用程序布局默认布局应用于新动作,或者换句话说,我只想从布局中删除索引动作,所以我写了这个,但它不起作用,索引模板正在使用布局渲染 class SessionsController < ApplicationController layout 'application', :except => :index def index end def new end def create

这里我有一个有4个动作的控制器,我想将应用程序布局默认布局应用于新动作,或者换句话说,我只想从布局中删除索引动作,所以我写了这个,但它不起作用,索引模板正在使用布局渲染

class SessionsController < ApplicationController

    layout 'application', :except => :index

    def index
    end 

    def new
    end


    def create
        end
    end

    def destroy
    end

end
但它也不起作用,和索引模板使用布局呈现的问题相同。
有什么建议这里有什么问题吗?

您可以创建一个方法来定义布局,并仅在新操作时修复布局

layout :my_layout

def my_layout
  params[:action] == 'new' ? 'application' : nil
end

您可以创建一个方法来定义布局,并仅在新操作上修复布局

layout :my_layout

def my_layout
  params[:action] == 'new' ? 'application' : nil
end

以下是可以在控制器中使用的代码:

layout :resolve_layout
...
...

private

def resolve_layout
  if %w(index show).include?(action_name)
    "application"
  elsif %w(show).include?(action_name)
    "admin"
  else
    "generic"
end
基本上,如果这些数组与当前的action_名称相比被评估为true,则将它们视为您给出的布局的:only语句


编辑:我忘了提到这允许:仅,:除等。

以下是您可以在控制器中使用的代码:

layout :resolve_layout
...
...

private

def resolve_layout
  if %w(index show).include?(action_name)
    "application"
  elsif %w(show).include?(action_name)
    "admin"
  else
    "generic"
end
基本上,如果这些数组与当前的action_名称相比被评估为true,则将它们视为您给出的布局的:only语句


编辑:我忘了提到这允许:仅,:除等。

好吧,它有效!!但是你知道为什么布局‘应用程序’,:except=>:索引不起作用吗??顺便说一句,布局'false',:except=>:new works to我想这是因为在我的情况下,我在所有情况下都将布局固定为nil,而不是新操作。但是使用:except或:only时,它是在其他情况下使用的继承布局。好吧,它可以工作!!但是你知道为什么布局‘应用程序’,:except=>:索引不起作用吗??顺便说一句,布局'false',:except=>:new works to我想这是因为在我的情况下,我在所有情况下都将布局固定为nil,而不是新操作。但是使用:except或:only时,它是在其他情况下使用的继承布局。