Come personalizzare la resa della raccolta quando si utilizza Active_model_Serializal?
-
12-12-2019 - |
Domanda
Sto usando Active_model_Serializal per il rendering di una raccolta come JSON per il consumo di Ember-Data. Tutto va bene quando rendi un singolo oggetto, ma il rendering della raccolta è costituito da una serie di articoli.
render json: @scenarios, status: :ok
.
dà:
[{"scenario":{"id":4,"name":"My sample scenario"}},{"scenario":{"id":5,"name":"Yet another sample scenario"}}]
.
Ma vorrei ottenere:
{"scenarios": [{"id":4,"name":"My sample scenario"},{"id":5,"name":"Yet another sample scenario"}]}
.
Qual è il modo dello stato del modo per ottenere una chiave radice con tutti gli elementi di raccolta, i dati laterali e così via?(La documentazione non è così chiara su questo)
Modifica
Lo scenario SeriaLizer è attualmente come segue:
.class ScenarioSerializer < ActiveModel::Serializer
attributes :id, :name
end
Soluzione
Prova l'ultima versione.AMS utilizza il nome del controller come chiave per un array.Per impostazione predefinita dovrebbe rendere come hai mostrato sopra.
Se il controller non è denominato scenariSoscontroller, è possibile forzare l'elemento root dell'array come questo:
render json: @scenarios, root: "scenarios", status: :ok
.