我的情况: ReportsController的查看操作应该呈现纯html,但不能作为文件(在浏览器中查看并保存之后)。因此,为了渲染我使用视图模板view.html.erb并且我需要关闭此操作的任何布局。但在此控制器的其他操作中,布局应保持不变。 只对这样的整个控制器起作用:
ReportsController < ApplicationController
layout false
但那样做错了:(对于所有的行动 我尝试在行动中使用这样的东西:
def view
@report = Report.new(params[:report])
unless @report.valid?
render :action => 'new' and return
else
render :layout => false
end
end
我该怎么办?
答案 0 :(得分:103)
答案 1 :(得分:64)
试试这个:
ReportsController < ApplicationController
layout false
layout 'application', :except => :view
答案 2 :(得分:10)
在回复栏中,添加layout: false
。
例如:
respond_to do |format|
format.html { render :layout => false } # your-action.html.erb
end
答案 3 :(得分:1)
如果您想获得非标准模板,没有布局,您可以使用:
def non_rest
render template: 'layouts/something_new', layout: false
end