Jbuilder без .расширение json

#ruby-on-rails #jbuilder

#ruby-on-rails #jbuilder

Вопрос:

Выполнение http://localhost:3000/options/audio

И я получаю сообщение об ошибке:

 Missing template options/audio, application/audio with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :jbuilder, :coffee]}. Searched in: * "/Users/mmahalwy/Desktop/Code/quran.com/QuranAPI/app/views"
 

Когда я делаю http://localhost:3000/options/audio.json

Это отображает мой файл Jbuilder и желаемый json. Как я могу отобразить свой шаблон jbuilder с помощью .расширение json?

Ответ №1:

В документации jbuilder указано, что вы должны создать свой шаблон jbuilder в виде *.json.jbuilder файла. Это заставляет маршрут искать .расширение json. Если вы удалите .разделите json и создайте свой файл *.jbuilder , чтобы вы могли перейти к маршруту без .расширение json.

Пример:

Filename: index.jbuilder
route: get 'ticket', to: 'tickets#index'

Ответ №2:

jbuilder это драгоценный камень, инструмент…. Я не пробовал, но если вам нужна функциональность по умолчанию (html) с json помощью and jbuilder , то:

 http://localhost:3000/options/audio
 

будет искать

 /Users/mmahalwy/Desktop/Code/quran.com/QuranAPI/app/views/.../audio.html.jbuilder
 

Итак, вы можете поместить туда свой код… Но это может быть только код jbuilder… В противном случае вы можете использовать обычный html.erb или другой файл со встроенным ruby и указать в нем создание jbuilder json:

 Jbuilder.encode do |json| # this is implied in .jbuilder files but can be used in any other ruby file
     json.xxx @yyy.xxx
     #....
end
 

Комментарии:

1. На самом деле я закончил тем, что ответил на свой собственный вопрос. Вместо name.json.jbuilder этого мне нужно просто сделать name.jbuilder , и ни respond_to один блок не будет использоваться по умолчанию для шаблона jbuilder.

2. name.jbuilder и name.html.jbuilder будет делать то же самое. respond_to форматировать ТОЛЬКО html не обязательно для записи.