Ember Data плурализира крайни точки на url при използване на store.find

Получих грешка с

GET http://localhost:63342/people 404 (Not Found)

и

Assertion failed: Error while loading route:....

Защо се появява тази грешка http://localhost:63342/people 404? Нямам този маршрут. ето моят js код:

window.Models = Ember.Application.create();

Models.Router.map(function () {
    //匹配路由后显示person_list模板
    this.resource('persons', { path: '/' });
});

Models.PersonsRoute = Ember.Route.extend({
    model:function(){
        return this.store.find('person');
    },
    setupController:function(controller, model){
        controller.set('content', model)
    }
});


Models.Person = DS.Model.extend({
    name: DS.attr('string'),
    description:DS.attr('string')
});

Models.Person.FEATURES = [{
    name:'Kratos Zhang',
    description:'a c# coder in 7agree.'
}]

и шаблон

<script type="text/x-handlebars" data-template-name="persons">
<ul>
    {{#each item in persons}}
    <li>
        <h4>{{item.name}}</h4>
        <p>{{item.description}}</p>
    </li>
    {{/each}}
</ul>

why isn't it working?


person Kratos    schedule 24.12.2013    source източник
comment
Имате модел, наречен Person и множественото число за този модел ще бъде People (това е конвенция), така че това е причината, поради която моделът се опитва да получи нещо на URL адреса на хората. Ако искате да промените множественото число на вашия модел, трябва да създадете персонализиран адаптер и да кажете на ember, че искате да използвате хора вместо хора. Вероятно тази връзка ви помага: discuss.emberjs.com/t/specifying- pluralization-of-models/1447   -  person Jorge García    schedule 25.12.2013
comment
Всъщност множественото число на човек е хора. Надявам се това да ви помогне.   -  person Jorge García    schedule 25.12.2013


Отговори (1)


Можете да замените pathForType в адаптера, ако това не е вашата крайна точка, Ember Data по подразбиране множествено число крайни точки

App.ApplicationAdapter = DS.RESTAdapter.extend({
  pathForType: function(type) {
     //return Ember.String.pluralize(type);
     return type;
  },

});

Това не е необходимо, можете да го изтриете

setupController:function(controller, model){
    controller.set('content', model)
}

лица не съществува в шаблона

{{#each item in model}} 
  <li>
    <h4>{{item.name}}</h4>
    <p>{{item.description}}</p>
  </li>
{{/each}}

or

{{#each item in controller}}
  <li>
    <h4>{{item.name}}</h4>
    <p>{{item.description}}</p>
  </li>
{{/each}}
person Kingpin2k    schedule 24.12.2013
comment
Можете също да създадете адаптери за всеки тип, ако не искате да правите това за всичко във вашето приложение. - person Steve H.; 25.12.2013