1
votes

I have set up the following scaffolding for my Ember application.

window.App = Ember.Application.create({});

App.Router.map(function () {
    this.resource('coaches', function() {
        this.resource('coach', {path: "/:person_id"});
    });
});

App.ApplicationAdapter = DS.FixtureAdapter.extend({});

App.Person = DS.Model.extend({
    fname: DS.attr('string')
    ,lname: DS.attr('string')
    ,sport: DS.attr('string')
    ,bio: DS.attr('string')
    ,coach: DS.attr('boolean')
    ,athlete: DS.attr('boolean')
});

App.Person.FIXTURES = [
    {
        id: 10
        ,fname: 'Jonny'
        ,lname: 'Batman'
        ,sport: 'Couch Luge'
        ,bio: 'Blah, blah, blah'
        ,coach: true
        ,athlete: true
    }
    ,{
        id: 11
        ,fname: 'Jimmy'
        ,lname: 'Falcon'
        ,sport: 'Cycling'
        ,bio: 'Yada, yada, yada'
        ,coach: false
        ,athlete: true
    }
];

I am trying to set up a route to filter the person model and return only coaches. Just to make sure I can access the data, I have simply used a findAll on the person model.

App.CoachesRoute = Ember.Route.extend({
    model: function() {
        return this.store.findAll('person');
    }
});

Now though, I am trying to implement the filter method detailed on the bottom of the Ember.js Models - FAQ page.

App.CoachesRoute = Ember.Route.extend({
    model: function() {
        var store = this.store;
        return store.filter('coaches', { coach: true }, function(coaches) {
            return coaches.get('isCoach');
        });
    }
});

The coaches route is not working at all with the new route implemented and the old one commented out. I am using the Ember Chrome extension and when using the filter route the console responds with, Error while loading route: Error: No model was found for 'coaches'. Apparently the route is not working, specifically the model. No kidding, right? What am I missing in my filter model route?

Thank you in advance for your help.

1

1 Answers

0
votes

The error message is spot on- there is no CoachModel. I think you need to do this:

App.CoachesRoute = Ember.Route.extend({
    model: function() {
        var store = this.store;
        return store.filter('person', { coach: true }, function(coaches) {
            return coaches.get('isCoach');
        });
    }
});