Sagen wir, ich habe ein Modell User
und einen Serializer UserSerializer < ActiveModel::Serializer
und einen Controller, der wie folgt aussieht:Aktives Modell Serializer: Hinzufügen zusätzlicher Informationen außerhalb Wurzel in ArraySerializer
class UsersController < ApplicationController
respond_to :json
def index
respond_with User.all
end
end
Jetzt bekomme ich ein, wenn ich Besuch /users
JSON-Antwort, die wie folgt aussieht:
{
"users": [
{
"id": 7,
"name": "George"
},
{
"id": 8,
"name": "Dave"
}
.
.
.
]
}
Aber was, wenn ich einige zusätzliche Informationen in der JSON-Antwort enthalten sein soll, die nicht relevant einen bestimmten Nutzer ist? Zum Beispiel:
{
"time": "2014-01-06 16:52 GMT",
"url": "http://www.example.com",
"noOfUsers": 2,
"users": [
{
"id": 7,
"name": "George"
},
{
"id": 8,
"name": "Dave"
}
.
.
.
]
}
Dieses Beispiel ist erfunden, aber es ist eine gute Annäherung dessen, was ich erreichen möchte. Ist dies mit aktiven Modell-Serialisierern möglich? (Vielleicht durch Unterklassen ActiveModel::ArraySerializer
? Ich konnte es nicht herausfinden). Wie füge ich zusätzliche Root-Elemente hinzu?
Versuchen Sie, Render: Json => User.all Anstelle von respond_with, siehe auch as_json könnte es hilfreich sein. –