Ember适配器无意中将模型名称从复数更改为单数

时间:2017-08-24 21:00:55

标签: ruby-on-rails ember.js

对于名为time-zone的模型,我有以下Ember适配器:

import Ember from 'ember';
import DS from 'ember-data';

export default DS.RESTAdapter.extend({
  namespace: 'api/v2',
  pathForType: function(type) {
    // type here is "time-zone"
    return Ember.String.underscore(type);
  }
});

我想要的是将我的HTTP请求发送到/api/v2/time_zones,但它会以/api/v2/time_zone的形式发送,这是错误的。

这是我的模型文件:

import DS from 'ember-data';

export default DS.Model.extend({
  name: DS.attr('string')
});

这是我的路由文件的相关部分:

import Ember from 'ember';

export default Ember.Route.extend({
  model(params) {
    return Ember.RSVP.hash({
      timeZones: this.store.findAll('time-zone')
    });
  }
});

timeZonetime-zone这样的名称改为端点URI(如/api/v2/time_zones)似乎是Ember的常见用例,所以我'我感到困惑的是,我尝试的东西不起作用。

我可以这样做并使其有效:

    return Ember.String.pluralize(Ember.String.underscore(type));

但这似乎是一个愚蠢的黑客,再次必须是一个超常见的用例。

1 个答案:

答案 0 :(得分:0)

我认为你在使用复数时正确地做到了。它在docs中说默认情况下它会使类型复数,但是由于你要覆盖它,你必须自己复数。