Как настроить рендеринг сбора при использовании Active_Model_Serializers?
-
12-12-2019 - |
Вопрос
Я использую Active_Model_Serializers, чтобы сделать коллекцию, как JSON для потребления Ember-Data. Все в порядке при рендеринге одного элемента, но рендеринг коллекции состоит в качестве массива элементов.
render json: @scenarios, status: :ok
.
дает:
[{"scenario":{"id":4,"name":"My sample scenario"}},{"scenario":{"id":5,"name":"Yet another sample scenario"}}]
.
Но я хотел бы получить:
{"scenarios": [{"id":4,"name":"My sample scenario"},{"id":5,"name":"Yet another sample scenario"}]}
.
Какое состояние искусства способом получить корневой ключ со всеми предметами коллекции, боковые данные и так далее?(Документация не совсем понятно об этом)
Редактировать
Сценарий Serializer в настоящее время как следует следующую:
.class ScenarioSerializer < ActiveModel::Serializer
attributes :id, :name
end
Решение
Попробуйте последнюю версию.AMS использует имя контроллера в качестве ключа для массива.По умолчанию он должен отображаться, как вы указали выше.
Если ваш контроллер не названа сценариосконтроллером, вы можете заставить корневой элемент массива, как это:
render json: @scenarios, root: "scenarios", status: :ok
.