在Ember-data的REST适配器和嵌套资源上苦苦挣扎

olv*_*ado 6 ember.js ember-data

我真的很挣Ember-data的REST适配器和嵌套资源,并希望得到任何帮助......我正在使用最新的(1.0.4pre)版本的Ember和Ember数据(版本:11).

我有2个简单的模型:

App.User = DS.Model.extend({
  name:     DS.attr('string'),
  email:    DS.attr('string'),
  schemes:  DS.hasMany('App.Scheme')
});

App.Scheme = DS.Model.extend({
  name: DS.attr('string'),
  users: DS.hasMany('App.User')
});
Run Code Online (Sandbox Code Playgroud)

和简单的嵌套路由:

Router.map(function() {
  this.resource("user", { path: "users/:user_id" }, function() {
    this.resource("schemes");
  });
});
Run Code Online (Sandbox Code Playgroud)

我有一个Rails 3 JSON API,它具有以下端点:

/users/:user_id
/users/:user_id/schemes
Run Code Online (Sandbox Code Playgroud)

当我导航到users/:user_id/schemes我的ember应用程序时,我想要检索所有用户的方案,但默认情况下Ember数据请求/schemes,这不是我的API中的端点 - 我可以添加它,但我需要按用户范围方案,我不有了current_user的概念,因为我想查看任何用户和她的方案.

有没有办法强制Ember查看/users/:user_id/schemes或将查询参数附加到Ember的默认ajax调用,例如:/schemes?user_id=:user_id

或者,有没有办法添加到ajax请求标头,反过来我的rails API可以相应地读取和设置/schemes响应?

ahm*_*eod 4

似乎这个功能已经被讨论了很多,但还没有实现。本期包含用于快速解决问题的示例代码。

您还可以使用:

var userSchemes = App.Scheme.find({ used_id: 'id' });
Run Code Online (Sandbox Code Playgroud)

来查询/schemes?user_id=id