开发者

Turn off layout for one of action

My situation: View action of ReportsController should render pure html, but not as a file (to view it in browser and save it after). So for rendering I use view template view.html.erb and i neet to turn off any layouts for this action. But in other actions of this controller layouts should stay untouched. Works only turning off for whole controller like this:

ReportsController < ApplicationController
  layout false

But that doing it wrong :( for all the actions I tried to use something like this in action:

def view      
  @report = Report.new(params[:report])
  unless @report.valid?
    render :action => 'new' and return
  else
    render :layout => false     
  end   
end
开发者_如何学C

What should I do?


This should do it,

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

Link to Documentation


Try this:

ReportsController < ApplicationController
  layout false
  layout 'application', :except => :view


In the respond block, add layout: false.

For example:

respond_to do |format|
  format.html { render :layout => false }
end


If you want to get a non-standard template, with no layout you can use:

def non_rest
  render template: 'layouts/something_new', layout: false
end
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜