ruby-on-rails - Active Model Serializer 不呈现集合的根键 - 版本 - 0.10.6
问题描述
我正在使用'active_model_serializers', '~> 0.10.6'
呈现我的 API 响应。对于我的index
行动,我正在这样做 -
render json: @items, root: 'data', each_serializer: ItemsSerializer
但在我的回应中,我没有得到root key
-data
[
{
"id": 85,
"title": "B",
"source": "manager_added",
"shared": true,
"status": "suggested",
"item_type": "action_item",
"manager": {
"id": 2614,
"full_name": "Calvin H",
"first_name": "Calvin"
},
"reportee": {
"id": 2614,
"full_name": "Calvin H",
"first_name": "Calvin"
}
},
{
"id": 87,
"title": "D",
"source": "manager_added",
"shared": true,
"status": "suggested",
"item_type": "action_item",
"manager": {
"id": 2614,
"full_name": "Calvin H",
"first_name": "Calvin"
},
"reportee": {
"id": 2614,
"full_name": "Calvin H",
"first_name": "Calvin"
}
}
]
我在这里做错了什么?
解决方案
AMS 最困难的部分是找到正确的文档。根据您提到的版本,这里是文档链接: https ://github.com/rails-api/active_model_serializers/tree/0-10-stable/docs
有3个适配器:
:default
(不会有root,基本root
key没用,加了也行):json
(这是您需要的,您可以添加自定义root
密钥。https://github.com/rails-api/active_model_serializers/blob/0-10-stable/docs/general/adapters.md#example-output-1):json_api
(默认root
键是data
,但您可以自定义,也许您可以使用它,但它会将响应 json 的整个结构更改为:https ://github.com/rails-api/active_model_serializers/blob/0- 10-stable/docs/general/adapters.md#example-output-2)
回答:
render json: @items, root: 'data', adapter: :json, each_serializer: ItemsSerializer
或者
render json: @items, adapter: :json, each_serializer: ItemsSerializer