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
.

È stato utile?

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
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top