Представление jbuilder с макетом
У меня есть контроллер, который иногда отображает HTML, а иногда JSON.
Для json я использую представления jbuilder.
Существует HTML-макет по умолчанию, который по неизвестной причине начинает отображаться также для представления json.
Я нашел 2 варианта, которые решают проблему
- добавлять
layout:false
на вызов рендеринга с представлением JSON - вызовите рендер частично вместо обычного рендера
Мне просто интересно (потому что он не рендерил макет несколько дней назад) Есть ли способ сообщить 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