如何在使用active_model_serializers时自定义集合渲染?

时间:2012-05-21 08:53:20

标签: ruby-on-rails json ember-data

我正在使用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"}]}

获取所有收集项,边数据等的根密钥的最新方法是什么? (文件对此并不清楚)

修改

方案序列化程序目前如下:

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

1 个答案:

答案 0 :(得分:1)

试用最新版本。 AMS使用控制器名称作为数组的键。默认情况下,它应该像上面显示的那样呈现。

如果你的控制器没有命名为ScenariosController,你可以像这样强制数组的根元素:

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