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
У вас есть модель под названием «Человек», и множественное число для этой модели будет «Люди» (это соглашение). Итак, это причина того, что модель пытается получить что-то по URL-адресу людей. Если вы хотите изменить множественное число вашей модели, вам нужно создать собственный адаптер и сообщить Ember, что вы хотите использовать людей вместо людей. Возможно, вам поможет эта ссылка: discuss.emberjs.com/t/specifying- множественное число моделей/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