Отключить макет для одного из действий


моя ситуация: Действие просмотра ReportsController должно отображать чистый html, но не как файл (чтобы просмотреть его в браузере и сохранить после). Поэтому для перевода я использую просмотр шаблона.формат 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

Что делать?

4 67

4 ответа:

попробуйте это:

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