这里我有一个带有4个动作的控制器,我想将应用程序布局(默认布局)仅应用于新动作,或者换句话说我想要除了布局中的索引动作之外所以我写这个但是它没有工作时,索引模板正在使用布局进行渲染。
class SessionsController < ApplicationController
layout 'application', :except => :index
def index
end
def new
end
def create
end
end
def destroy
end
end
我也试过
layout 'application', :only => :new
但它也不起作用,索引模板与布局呈现的问题相同。 任何建议这里的问题是什么?
答案 0 :(得分:3)
您可以创建一种方法来定义布局并仅在新操作
上修复布局layout :my_layout
def my_layout
params[:action] == 'new' ? 'application' : nil
end
答案 1 :(得分:1)
以下是您可以在控制器中使用的代码:
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_name进行比较评估为true,则将这些数组视为:仅用于布局的语句。
编辑:我忘了提到这只允许:只有,:除了等等。