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
精彩评论