2017-08-25 3 views
2

Ich versuche, Ember-Daten einzurichten, um mit einem Rails-Backend zu kommunizieren. Ember gelingt es, den Endpunkt aufzurufen, erhält 200 und einige Antwortdaten. Das Problem ist, dass Ember die Antwortdaten nicht mit einem meiner Ember-Modelle vergleichen kann.Ember Daten inkompatibel mit Rails JSON-Antwort: Es wurde eine Ressource mit einem nicht definierten Typ gefunden

Mein Modellcode:

export default DS.Model.extend({ 
    user_id: DS.belongsTo('user'), 
    transcription: DS.attr('string'), 
    transcription_time: DS.attr('date'), 
    transcription_date: DS.attr('date'), 
    recording_url: DS.attr('string'), 
    state: DS.attr('string') 
}); 

Unten ist ein Bild davon, wie die Daten-Backend kehrt zusammen mit dem Fehler von Ember:

enter image description here

Fehler: Encountered a resource with an undefined type.

I don müssen nicht created_at oder updated_at in meine Ember-Modelle aufnehmen, oder? Wie weiß Ember auch, user_id mit meinem User Ember-Modell zu verbinden? Ist das der Grund für den Fehler? Ich spezifizierte user_id zu belongTo('user') obwohl. Muss ich das Feld type explizit in meine JSON-Antwort aufnehmen? Das scheint jedoch nicht richtig zu sein.

Ich habe ein paar Ember Guides gelesen, einschließlich ihrer guide on models und ihre guide on serializers. Ich muss keinen benutzerdefinierten JSONAPISerializer schreiben, oder? Die meisten der Führer, die ich gelesen habe, haben das nicht gesagt. Jede Hilfe und Tipps würden sehr geschätzt werden!

Antwort

1

Ihre JSON-Antwort sollte gemäß der Spezifikation JSONAPI ein "type" -Feld enthalten. Hier ist, was die JSON aus meiner Rails-Anwendung wie folgt aussieht:

{"data":{"attributes":{"title":"asdf","body":"adsf"},"type":"posts"}} 

Sind Sie Active Modell Serializer auf den Schienen Seite verwenden, und haben so konfigurieren Sie den JSONAPI Renderer zu benutzen?

Alles, was Sie tun müssen, wird ActiveModelSerializers.config.adapter in einem Initialisierer:

# config/initializers/jsonapi.rb 
ActiveModelSerializers.config.adapter = :json_api 

Es sollte die type Feld automatisch enthalten.

Wenn Sie immer noch Probleme haben, denke ich, wenn Sie einige Ihrer Schienen Code teilen kann ich helfen.

+0

Vielen Dank! Ich habe meine Rails konfiguriert und jetzt macht es das auch automatisch :) – Sticky

Verwandte Themen