Отключить макет для одного из действий - PullRequest
72 голосов
/ 14 января 2010

Моя ситуация: Действие просмотра 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 ]

105 голосов
/ 05 марта 2013

Это должно сделать,

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

Ссылка на документацию

64 голосов
/ 14 января 2010

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

ReportsController < ApplicationController
  layout false
  layout 'application', :except => :view
10 голосов
/ 28 мая 2013

В ответном блоке добавьте layout: false.

Например:

respond_to do |format|
  format.html { render :layout => false } # your-action.html.erb
end
1 голос
/ 23 мая 2018

Если вы хотите получить нестандартный шаблон, без макета вы можете использовать:

def non_rest
  render template: 'layouts/something_new', layout: false
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...