首页 > 解决方案 > 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"
    }
  }
]

我在这里做错了什么?

标签: ruby-on-railsrubyruby-on-rails-5active-model-serializers

解决方案


AMS 最困难的部分是找到正确的文档。根据您提到的版本,这里是文档链接: https ://github.com/rails-api/active_model_serializers/tree/0-10-stable/docs

有3个适配器:

  1. :default(不会有root,基本rootkey没用,加了也行)
  2. :json(这是您需要的,您可以添加自定义root密钥。https://github.com/rails-api/active_model_serializers/blob/0-10-stable/docs/general/adapters.md#example-output-1
  3. :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

推荐阅读