Ember应用程序不会使用ActiveModelAdapter从has_many关系加载数据

时间:2014-02-03 17:35:34

标签: ember.js ember-data

这个应用程序在商店是FixtureAdapter时工作正常,但是当商店是ActiveModelAdapter时不会加载has_many关系。

路线是这样的:

App.IndexRoute = Ember.Route.extend({
  model: function(){
    return this.store.find('post', 1 )
  }
}); 

模型是这样的:

App.Post =  DS.Model.extend({
  name: DS.attr('string'),
  description: DS.attr('string'),
  comments: DS.hasMany('comments', {embedded: 'always'})
});

App.Comment =  DS.Model.extend({
  text: DS.attr('string'),
  post: DS.belongsTo('post')
});

把手模板要求:

{{name}}
{{#each comments}}
   {{text}}
{{/each}}

显示名称,评论不显示。 在ember开发人员控制台中,评论根本没有加载。

服务器似乎正确地提供了序列化内容(据我所知)。它看起来像这样:

{"post":{"id":1,"name":"Title","description":"Lorem Ipsum","comments":[{"id":1, "text": "commentary here"}]}}

有谁知道为什么这不起作用以及我如何解决它?我一直在努力工作几个小时,无法弄清楚为什么它不起作用。非常感谢您提供的任何见解。

我正在使用它作为Rails项目的一部分,这些是相关的宝石:

gem 'ember-rails'
gem 'ember-source', '1.3.0'
gem 'ember-data-source', '~> 1.0.0.beta.6'
gem "active_model_serializers"

1 个答案:

答案 0 :(得分:2)

您需要为每个over-riden模型指定一个自定义适配器并混合使用Embedded Records Mixin:

App.PostSerializer = DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, {
    attrs: {
        comments: {embedded: 'always'}
    }
});

有关详细信息,请参阅Ember-Data源代码中的注释。