2013-05-28 5 views
30

Я создал новый проект рельсов 4 (rc1) с использованием rails new и создал эшафот с использованием rails g scaffold.Почему строительные леса Rails 4 создают файлы json.jbuilder?

Как и ожидалось, он создал миграцию, контроллер и все необходимые файлы представлений.

Он также создал show.json.jbuilder и index.json.jbuilder.

Я предполагаю, что это поможет генерировать json от моделей. Контроллер также содержит вызовы format.json.

Вопрос: зачем нужен json и какая часть сгенерированного приложения использует json? Это не похоже на меня (для меня) представления используют json для визуализации чего-либо, кажется, они отображаются на стороне сервера (переменные @model используются в представлениях для получения содержимого).

Рельсовые направляющие (http://edgeguides.rubyonrails.org/) не видят упоминания jbuilder и почему это необходимо там.

Заранее благодарен! Пожалуйста, дайте мне знать, если я смогу прояснить вопрос.

ответ

33

Чтобы ответить на «почему» часть:

Актуальность подмостей в Rails имеет несколько сдвинут на протяжении многих лет , Он больше не предназначен для создания необходимого кода, который не может быть легко абстрагирован. Сегодня это в основном инструмент образовательный инструмент, чтобы предоставить вам несколько динамичный пример и продемонстрировать лучшие практики. (Это также причина, почему они посыпают комментарии с спорной полезностью)

Другими словами, генерируемые файлы предназначены, чтобы сказать вам:

Если вы собираетесь использовать Rails, вот это хороший способ, как вы могли бы это сделать.

или в вашем конкретном случае:

Если вы собираетесь использовать JBuilder, вот это хороший способ для генерации JSON.

Это не предназначено для того, чтобы сказать: «Вот как это должно быть сделано.»или« Вы должны сохранить все сгенерированные материалы, потому что это необходимо ».

+0

'GET' метод в формате JSON (сгенерированный на Rails-эшафоте по умолчанию) не является хорошей практикой из-за JSON Hijacking. – konyak

10

Jbuilder камень включен в RoR 4 по умолчанию. Вы можете прочитать об этом на своей странице. Есть актерский состав: Railscasts #320.

+7

thx, но это не отвечает на мой вопрос – vrepsys

+0

Thx для этого я использую RABL, и он не генерировал JSON из файлов .rabl. Не понимал, что jbuilder мешает. Прокомментировал это, и все это сработало отлично. –

14

Генератор эстакад Rails 4 создает файлы jbuilder, поскольку драгоценный камень Jbuilder находится в Gemfile. Если вы удалите это из своего Gemfile, эта функция остановится.

16

Как уже говорилось, Rails 4, похоже, генерирует файлы как способ создания шаблона для ответа на запрос JSON. Итак, предположим, что у вас «подмосковная» модель Car, тогда она ответит HTML-страницей и подробным видом автомобиля (id 1), если вы идете /car/1.

Тогда, если вы перейдете на /car/1.json, он отобразит файл show.json.jbuilder. Там также, как представляется, своего рода автоматический механизм, как метод show пуст, когда строительные леса:

def show 
end 
+4

наверху контроллера есть 'be fore_action: set_modelname' , который вызывает закрытый метод определение функции set_activity @modelname = Modelname.find (PARAMS [: идентификатор]) end' – Anchor

+1

'Тогда, если вы идете в /car/1.json, будет оказывать файл show.json.jbuilder' прекрасно сказал – Aleks

0

В настоящее время угловые или подобные рамки популярны или если вы пишете API для мобильного приложения. Это представление JSON-builder можно использовать. не использовать Rails-представления. Для всех остальных API JSON стал стандартным форматом. Полезно иметь как вид HTML & JSON, созданный автоматически под эстакадой рельсов.

Смежные вопросы