Active Model Serializer not rendering the root key for collection - Version- 0.10.6
Asked Answered
F

1

6

I am using 'active_model_serializers', '~> 0.10.6' for rendering my API response. For my index action I am doing this -

render json: @items, root: 'data', each_serializer: ItemsSerializer

but in my response, I am not getting the 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"
    }
  }
]

What I am doing wrong here?

Forum answered 21/2, 2020 at 12:10 Comment(0)
M
9

The hardest part with AMS is finding it's right documentation. Based on the version you have mentioned, here's the documentation link: https://github.com/rails-api/active_model_serializers/tree/0-10-stable/docs

There are 3 adapters:

  1. :default (There won't be any root, basically root key is useless, even if you add it)
  2. :json (This is what you need, you can add custom root key. https://github.com/rails-api/active_model_serializers/blob/0-10-stable/docs/general/adapters.md#example-output-1)
  3. :json_api (Default root key will be data, but you can customize, maybe you can use this, but it will change the whole structure of your response json into something like: https://github.com/rails-api/active_model_serializers/blob/0-10-stable/docs/general/adapters.md#example-output-2)

Answer:

render json: @items, root: 'data', adapter: :json, each_serializer: ItemsSerializer

or

render json: @items, adapter: :json, each_serializer: ItemsSerializer
Mull answered 21/2, 2020 at 12:22 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.