Ruby on rails 特定操作的渲染布局
这里我有一个有4个动作的控制器,我想将应用程序布局默认布局应用于新动作,或者换句话说,我只想从布局中删除索引动作,所以我写了这个,但它不起作用,索引模板正在使用布局渲染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
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时,它是在其他情况下使用的继承布局。