Ember变形器和西班牙语复数用两个单词的名字

时间:2014-05-09 17:41:31

标签: ember.js ember-data

我使用Ember Data(1.0.0-beta.7)和DS.RESTAdapter以及西班牙语API。我有一个模型调用App.ModuloPerfil,代表了多对多的三元关系:

App.Perfil = DS.Model.extend({
  nombre: DS.attr(),
  tipo: DS.attr(),
  modulosPerfiles: DS.hasMany('moduloPerfil', { async: true })
});

App.Modulo = DS.Model.extend({
  nombre: DS.attr(),
  alias: DS.attr(),
  tipo: DS.attr(),
  modulosPerfiles: DS.hasMany('moduloPerfil', { async: true })
});

App.ModuloPerfil = DS.Model.extend({
  enabled: DS.attr(),
  perfil: DS.belongsTo('perfil', { async: true }),
  modulo: DS.belongsTo('modulo', { async: true })
});

我已经定义了一些处理西班牙语复数的变形规则:

Ember.Inflector.inflector.irregular('perfil', 'perfiles');
Ember.Inflector.inflector.irregular('moduloPerfil', 'modulosPerfiles');

当我向/api/perfil/1发出API请求时,我收到以下回复:

{"perfil": {id: 1, nombre: "Perfil investigador", tipo: "Investigador", modulosPerfiles: [1,2]}}

到目前为止似乎一切正常,但是当我检查从客户端对API进行的调用时,我发现当它尝试检索de moduloPerfil元素时,网址为:

GET /api/moduloPerfils?ids[]=1&ids[]=2

它使用" moduloPerfils",英文复数,而不是在变形器中定义的不规则规则。

我尝试过使用Ember.Inflector.inflector.irregular('modulo-perfil', 'modulos-perfiles'),但我也没有尝试过。

如何定义不规则规则?

1 个答案:

答案 0 :(得分:1)

经过一些测试后,我发现了错误。这不是规则问题,问题是Ember.Inflector规则必须在 Ember.Application.create之前声明

我在做:

var App = Ember.Application.create();

Ember.Inflector.inflector.irregular('perfil', 'perfiles');
Ember.Inflector.inflector.irregular('moduloPerfil', 'modulosPerfiles');

正确的顺序是:

Ember.Inflector.inflector.irregular('perfil', 'perfiles');
Ember.Inflector.inflector.irregular('moduloPerfil', 'modulosPerfiles');

var App = Ember.Application.create();

抱歉,这是一个愚蠢的错误。

已修复:最后这不是错误,而且代码是正确的。可以在创建App之前或之后声明规则。原始代码没有错误,因此问题可能是我没有看到的另一件事。