Active Model Serializer не отображает ключ root для сбора - Версия- 0.10.6 - PullRequest
2 голосов
/ 21 февраля 2020

Я использую '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"
    }
  }
]

Что я делаю здесь не так?

1 Ответ

2 голосов
/ 21 февраля 2020

Самое сложное в AMS - найти правильную документацию. В зависимости от версии, которую вы упомянули, вот ссылка на документацию: https://github.com/rails-api/active_model_serializers/tree/0-10-stable/docs

Есть 3 адаптера:

  1. :default (не будет быть любым root, в основном root ключ бесполезен, даже если вы добавите его)
  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
...