Ответ 1
Попробуйте следующее:
ReportsController < ApplicationController
layout false
layout 'application', :except => :view
Моя ситуация: Просмотр действия ReportController должен отображать чистый html, но не как файл (просмотреть его в браузере и сохранить его после). Поэтому для рендеринга я использую view view.html.erb и я neet, чтобы отключить любые макеты для этого действия. Но в других действиях этого контроллера макеты должны оставаться нетронутыми. Работает только для всего контроллера:
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
Что мне делать?
Попробуйте следующее:
ReportsController < ApplicationController
layout false
layout 'application', :except => :view
Это должно сделать это,
def view
...
render :layout => false
end
В блоке ответа добавьте layout: false
.
Например:
respond_to do |format|
format.html { render :layout => false } # your-action.html.erb
end
Если вы хотите получить нестандартный шаблон, без макета вы можете использовать:
def non_rest
render template: 'layouts/something_new', layout: false
end