Представление jbuilder с макетом

У меня есть контроллер, который иногда отображает HTML, а иногда JSON.

Для json я использую представления jbuilder.

Существует HTML-макет по умолчанию, который по неизвестной причине начинает отображаться также для представления json.

Я нашел 2 варианта, которые решают проблему

  1. добавлять layout:false на вызов рендеринга с представлением JSON
  2. вызовите рендер частично вместо обычного рендера

Мне просто интересно (потому что он не рендерил макет несколько дней назад) Есть ли способ сообщить rails, что рендеринг макета только для форматов HTML-запросов?

2 ответа

Решение

Очевидно, что если имя вашего файла макета не имеет.html, оно будет использоваться для всех типов запросов. Мой файл макета был x.erb, и его изменение на x.html.erb решает эту проблему.

Проверь это:

respond_to do |format|
   format.html { render 'something.html.erb'}
   format.json { render json: @next_level.to_json ,layout: false}
end
Другие вопросы по тегам