Como personalizar coleção de renderização quando usando active_model_serializers?
-
12-12-2019 - |
Pergunta
Eu estou usando active_model_serializers para compor uma coleção como JSON para ember-consumo de dados.Está tudo ok quando o processamento de um único item, mas a recolha de renderização constituída como uma matriz de itens.
render json: @scenarios, status: :ok
dá:
[{"scenario":{"id":4,"name":"My sample scenario"}},{"scenario":{"id":5,"name":"Yet another sample scenario"}}]
mas eu gostaria de obter:
{"scenarios": [{"id":4,"name":"My sample scenario"},{"id":5,"name":"Yet another sample scenario"}]}
Qual é o estado da arte de forma a obter uma chave de raiz com todos os itens de coleção, lado a dados, e assim por diante?(a documentação não é clara sobre isso)
EDITAR
O cenário serializador, atualmente, como a seguir:
class ScenarioSerializer < ActiveModel::Serializer
attributes :id, :name
end
Solução
Tente a versão mais recente.AMS usa o nome do controlador de como a chave para uma matriz.Por padrão, ele deve render como você mostrou acima.
Se o seu controlador não é chamado ScenariosController, você pode forçar o elemento raiz da matriz como esta:
render json: @scenarios, root: "scenarios", status: :ok