如何访问API中的嵌套资源

时间:2017-07-20 03:04:28

标签: ruby-on-rails ember.js ember-data

我有一个使用Rails API的Ember应用。我有一个团队表和一个裁判表,都链接到另一个名为refereeTeamStats的表。我正在尝试为一个团队获得所有裁判队员,并包括裁判资源,以便我可以获得裁判的名字。简而言之,我需要我的Ember应用程序来呼叫/teams/:team_id/refereeTeamStats?include=referee 最初,我让我的应用程序通过这条路线获得了裁判队员队伍:

model() {
  return this.modelFor('teams/show').get('refereeTeamStats');
}

这将调用/teams/:team_id/refereeTeamStats但是,这将不包括裁判资源。我可以通过在嵌套资源(refereeTeamStats)上包含资源(裁判)来获得refereeTeamStats的最佳方式是什么?

2 个答案:

答案 0 :(得分:0)

您的refereeTeamStats序列化程序可以实现DS.EmbeddedRecordsMixin,并定义

attrs: {
  referee: { embedded: 'always' }
}

因此,如果您的API在referee有效内容中返回refereeTeamStats键,则ember会将其反序列化为正确的对象。

答案 1 :(得分:0)

我最后以不同的方式解决这个问题。由于我使用的是JSONAPI::Resources gem,我可以改为/refereeTeamStats?filter[team_id]=:team_id&include=referee。为此,我这样做了:

model() {
  const team = this.modelFor('teams/show');
  return this.store.query('refereeTeamStat', {filter: {team_id: team.get('id')}, include: 'referee'});
}