URL-адрес Ember ActiveModelAdapter без подчеркивания?

У меня есть ответ json на GET-request =>/checklists

{"check_lists": [
 {
 "id": 1,
 "name": "Example-list-1",
 "description": ""
 },
 {
 "id": 2,
 "name": "Example-list-1",
 "description": ""
 }
}

Для обработки подчеркнутого соглашения об именах этого сервера я использую ActiveModelAdapter и ActiveModelSerializer.

Проблема, с которой я столкнулся, - это запрос-url. Моя модель называется App.CheckList = DS.Model.extend({... и это то место, где она начинает усложняться), если я звоню

return this.store.find('checkList');

в моем маршруте, Ember запускает запрос GET в /checkLists route вместо /check_lists =>

GET http://localhost:3000/checkLists 404 (Not Found)
Error while processing route: checklists

неожиданно для этой ошибки

buildURL: function(type, id) {
 return this._super(type, id);
},

не используется, поэтому я не могу изменить URL.

Кто-нибудь знает, как изменить запрос /check_lists?

1 ответ

Отображение верблюжьего случая и подчеркнутого случая выполняется в функции ActiveModelAdapter.pathForType. Вы можете переопределить его и внести в него свои изменения. Например, чтобы перейти от случая с верблюжьим корпусом к подчеркнутому случаю:

App.ApplicationAdapter = DS.ActiveModelAdapter.extend({
 pathForType: function(type) {
 var decamelized = Ember.String.decamelize(type);
 var underscored = Ember.String.underscore(decamelized);

 //Alternatively, you can change urls to dasherized case using this line
 //var dasherized = Ember.String.dasherize(decamelized);

 return Ember.String.pluralize(underscored);
 }
});

Странная часть состоит в том, что последние Ember Data уже имеют этот код в ActiveModelAdapter. Вы можете проверить версию, в которой вы работаете, и обновить ее до того, что я предлагаю выше.

licensed under cc by-sa 3.0 with attribution.