2016-07-29 13 views
2

Ich verwende Rails, um APIs mit grundlegenden Todo Informationen zu erstellen: Name, Liste und Elemente. Ich will es json-Format zurückzukehren, so etwas wie folgt aussehen:Rails Active Modell Serializer gibt Array statt JSON

{ 
    "data": [ 
    { 
     "type": "posts", 
     "id": "1", 
     "attributes": { 
     "title": "JSON API is awesome!", 
     "body": "You should be using JSON API", 
     "created": "2015-05-22T14:56:29.000Z", 
     "updated": "2015-05-22T14:56:28.000Z" 
     } 
    } 
    ], 
    "links": { 
    "href": "http://example.com/api/posts", 
    "meta": { 
     "count": 10 
    } 
    } 
} 

^Code aus Active Serializer's Github.

Wenn ich mich auf meinem localhost http://localhost:3000/api/users/, zeigt es

[{"id":1,"username":"Iggy1","items":[{"id":1,"list_id":1,"name":"Wash dishes","completed":true},{"id":7,"list_id":1,"name":"Finish this assignment","completed":false}],"lists":[{"id":1,"name":"Important!","user_id":1,"permission":"private"},...

Es wird ein Array von Hashes zurück. Ich bin mir sicher, dass ich einen wichtigen Schritt verpasst habe, als ich meinen Serializer eingerichtet habe. Wie kann ich mein Hash-Array in das JSON-API-Format umformatieren?

Ich habe gelesen getting started guide, rendering und JSON API Abschnitt, aber ich konnte es immer noch nicht herausfinden. Ich hätte es vielleicht übersehen.

Einige meiner Codes:

app/Serializer/user_serializer.rb

class UserSerializer < ActiveModel::Serializer 
    attributes :id, :username#, :email 
    has_many :items, through: :lists 
    has_many :lists 
end 

app/controllers/api/users_controller.rb

def index 
    @users = User.all 
    render json: @users, each_serializer: UserSerializer 
    end 

Routen Schienen.applic ade.routes.draw tun

namespace :api, defaults: { format: :json } do 

    resources :users do 
     resources :lists 
    end 
    end 
end 

Lassen Sie mich wissen, wenn ich es besser klären kann. Vielen Dank!!

+2

Haben Sie angegeben, dass Sie den JSON-API-Adapter verwenden möchten? Sie müssen 'ActiveModelSerializers.config.adapter = ActiveModelSerializers :: Adapter :: JsonApi' in Ihrer Konfiguration einstellen. Anweisungen [hier] (https://github.com/rails-api/active_model_serializers/blob/master/docs/general/adapters.md#jsonapi) – chrismanderson

+1

Es hat funktioniert! Vielen Dank :). Ich wusste nicht, wo ich es vorher hinstellen sollte. – Iggy

Antwort

2

(Antwort von Kommentaren)

die JSON API-Adapter zu verwenden, benötigen Sie Sie erklären wollen, es zu benutzen.

ActiveModelSerializers.config.adapter = ActiveModelSerializers::Adapter::JsonApi 

Gemäß dem AMS readme.

Verwandte Themen