2012-05-21 2 views
1

Я использую active_model_serializers для рендеринга коллекции как JSON для потребления ember-данных. Все в порядке при рендеринге одного элемента, но рендеринг коллекции состоит из массива элементов.Как настроить рендеринг коллекции при использовании active_model_serializers?

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"}]} 

Что такое состояние искусства способ получить корневой ключ со всеми коллекционных, бок- данных и т. д.? (Документация не то, что ясно говорит об этом)

EDIT

Сценарий сериализатору в настоящее время следующим образом:

class ScenarioSerializer < ActiveModel::Serializer 
    attributes :id, :name 
end 
+0

http://railscasts.com/episodes/322-rabl – jdoe

+0

@jdoe Спасибо за ваше предложение , но я хотел бы продолжать использовать active_model_serializers, поскольку я не хочу, чтобы сам код вызывал все проблемы сериализации. –

+0

Как выглядит ваш scene_serializer.rb (или эквивалент)? – sapientpants

ответ

1

Попробуйте последнюю версию. AMS использует имя контроллера как ключ для массива. По умолчанию он должен отображаться, как показано выше.

Если ваш контроллер не называется ScenariosController, вы можете заставить корневой элемент массива, как это:

render json: @scenarios, root: "scenarios", status: :ok 
+0

Правильно. На самом деле, у меня была ошибка в другом месте ... у некоторых из моих классов моделей была обычная реализация 'to_json', которую я пропустил ... :-( –

+0

Прохладный. В общем, теперь лучше управлять массивами в AMS. – tee

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