2014-02-25 12 views
6

Ich habe einen einfachen aktives Modell Serializer:Ember.js ActiveModelAdapter und Active Modell Serializer Standardverhalten

class ActivitySerializer < ActiveModel::Serializer 
    attributes :id, :title, :description, :time 
    has_one :category 
    has_one :user 
end 

Ich habe Kategorie und auch Benutzer Serializer und sie funktionieren wie erwartet. Ich bekomme diese Nutzlast:

{"activities":[{"id":1,"title":"Test Activity","description":null,"time":"2014-03-01T06:05:41.027Z","category":{"id":1,"title":"Sports"},"user":{"id":1,"name":"ember"}}]} 

Sie scheinen jedoch nicht in Glut zu laden.

Wenn ich den Glut Inspektor überprüfe, werden die Daten nicht geladen. Welche Art von Format erwartet ActiveModelSerializer? Es lädt eine Aktivität, aber nicht die Kategorie oder Benutzerattribute.

Antwort

7

Der Trick nahm mich ein wenig, um online zu finden, mein Modell musste embed :ids enthalten.

class ActivitySerializer < ActiveModel::Serializer 
    embed :ids, include: true 

    attributes :id, :title, :description, :time 
    has_one :category 
    has_one :user 
end 

Alternativ Sie etwas entlang der Linien tun, aber keine Versprechungen ich nie diesen Code getestet.

App.ActivitySerializer = DS.ActiveModelSerializer.extend DS.EmbeddedRecordsMixin, 
    attrs: 
    user: {embedded: 'always'} 
    category: {embedded: 'always'} 


App.ApplicationAdapter = DS.ActiveModelAdapter.extend 
    defaultSerializer: 'DS/app' 
+1

Die Embed: IDs funktioniert für mich. Die Alternative ist App.ActivitySerializer = DS.ActiveModelSerializer.extend (DS.EmbeddedRecordsMixin, {attrs: {category: {eingebettet: 'always'}}}); –

3

Die einbetten ids wie von Ryan erwähnt arbeitet, aber Sie könnten mit Beugungen haben Probleme wie organized_by organized_bies wird und dann müssen Sie beide Seiten konfigurieren, ihn zu korrigieren. Der JS-Code benötigt, um dieses Problem zu beheben ist:

Verwandte Themen