关闭其中一个操作的布局

时间:2010-01-14 05:19:03

标签: ruby-on-rails layout

我的情况: 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

我该怎么办?

4 个答案:

答案 0 :(得分:103)

这应该这样做,

def view
    ...
    render :layout => false
end

Link to Documentation

答案 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