2017-08-25 3 views
2

J'essaie de configurer des données Ember pour parler à un backend Rails. Ember réussit à appeler le point final, obtient à la fois un 200 et quelques données de réponse. Le problème est que Ember est incapable de faire correspondre les données de réponse à l'un de mes modèles Ember que j'ai créés.Données Ember incompatibles avec Rails Réponse JSON: J'ai rencontré une ressource avec un type indéfini

Mon code modèle:

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') 
}); 

Ci-dessous est une image de la façon dont les retours d'arrière-plan des données ainsi que l'erreur de Ember:

enter image description here

Erreur: Encountered a resource with an undefined type.

Je don Pas besoin d'inclure created_at ou updated_at dans mes modèles Ember, n'est-ce pas? Aussi, comment Ember sait-il se connecter user_id avec mon modèle User Ember? Est-ce que c'est ce qui cause l'erreur? Cependant, j'ai spécifié user_id à belongTo('user'). Ai-je besoin d'inclure explicitement le champ type dans ma réponse JSON? Cela ne semble pas correct cependant. J'ai lu quelques guides Ember, y compris leurs guide on models et guide on serializers. Je n'ai pas besoin d'écrire un JSONAPISerializer personnalisé, n'est-ce pas? La plupart des guides que j'ai lus n'ont pas dit de le faire. Toute aide et conseils seraient grandement appréciés!

Répondre

1

Votre réponse JSON doit inclure un champ "type", conformément à la spécification JSONAPI. Voici ce que les JSON de mes rails app ressemble:

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

Êtes-vous en utilisant le modèle actif Sérialiseurs du côté des rails, et avez-vous le configurer pour utiliser le moteur de rendu JSONAPI?

Tout ce que vous devez faire est de définir ActiveModelSerializers.config.adapter dans un initialiseur:

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

Il devrait inclure automatiquement le champ type.

Si vous avez encore des problèmes, je pense que si vous partagez un peu de votre code de rails, je peux vous aider.

+0

Merci! J'ai configuré mes Rails et maintenant il le fait automatiquement aussi :) – Sticky