2013-07-03 2 views
1

В Rails 4, при визуализации объекта, например пользователя, я получаю это:Имя объекта в оказании JSON

{ "id" : 4 , "name" : "John" } 

В то время как при использовании Рельсы-апи камень, я получаю это:

{ "user" : { "id" : 4, "name" : "John" } } 

Что было бы правильнее, и как я могу заставить Rails вернуть ключ объекта?

Прямо сейчас я делаю это в моем контроллере:

render json: @user 
+0

Используйте опцию 'include_root_in_json': http://api.rubyonrails.org/classes/ActiveModel/Serializers/JSON.html – tight

+0

О, спасибо. Могу я спросить, какова сделка с этим пространством имен? Я вижу maaany разные мнения. –

+0

IDK, просто нашел этот параметр при попытке Backbone.js (http://backbonejs.org/#Model-parse) – tight

ответ

0

Чтобы объяснить, почему вы видите это поведение ...

В Rails 4 они изменили «изменили ActiveModel::Serializers::JSON.include_root_in_json значение по умолчанию false» (source).

С другой стороны, камень rails-api по умолчанию включает в себя корневой элемент. Вы можете легко отключить его по всему миру или на основе каждого звонка ... документы объясняют это here.

Что касается вашего «что было бы правильнее» вопрос ...

Я думаю, что ответ является субъективным. Если бы я начинал приложение с нуля, я бы, вероятно, сделал бы мой клиент привязан к значениям по умолчанию, предоставленным используемым бэкэндом. Похоже, что это будет путь наименьшего сопротивления при работе с будущими обновлениями.

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