2014-02-16 90 views
6

我是新來的燼,並正在構建一個非常簡單的應用程序。通過點擊鏈接到標籤生成的鏈接,我可以從我的育種者索引頁(/育種者)導航到我的育種者展示頁面(/ breeders /:breeder_id)。但是如果我手動導航到育種/ 1或任何其他breeders.show路線,我得到了以下錯誤:Ember「參數未定義」路由

Error while loading route: ReferenceError: params is not defined 
at Catapp.BreedersShowRoute.Ember.Route.extend.model 

我想不出我做了什麼,是造成這一點。

這是什麼,我認爲是相關代碼:

//router.js 
    Catapp.Router.map(function() { 
     this.resource('breeders', function() { 
      this.route('new'); 
      this.route('show', {path: '/:breeder_id'}); 
     }); 
    }); 

    Catapp.IndexRoute = Ember.Route.extend({ 
     redirect: function(){ 
      this.transitionTo('breeders.index'); 
     } 
    }); 

    Catapp.BreedersIndexRoute = Ember.Route.extend({ 
     model: function(){ 
      return this.store.find('breeder'); 
     } 
    }); 

    Catapp.BreedersShowRoute = Ember.Route.extend({ 
     model: function(){ 
      return this.store.find('breeder', params.breeder_id); 
     } 
    }); 

// breeders_controller.js 
Catapp.BreedersController = Ember.ArrayController.extend({ 
    sortProperties: ['id'] 
}); 

回答

14

你需要實際參數添加到模型中鉤

Catapp.BreedersShowRoute = Ember.Route.extend({ 
    model: function(params){ 
     return this.store.find('breeder', params.breeder_id); 
    } 
}); 

你可以稱它爲任何你喜歡以及

Catapp.BreedersShowRoute = Ember.Route.extend({ 
    model: function(foo){ 
     return this.store.find('breeder', foo.breeder_id); 
    } 
}); 
+0

對於那些來到這裏,並意識到了這一點對他們不起作用,這很可能是因爲你不在該模型的'index'路徑中:唯一的地方'params'工作。我使用[此解決方案](http://stackoverflow.com/a/20503866/1450226)。 –

+0

我想添加額外的信息給答案,但我不確定是否理解你指的是什麼。根據「:foo」在路由器中的位置填充參數。 – Kingpin2k

+0

如果您在URL中使用'/:foo'參數包含數據。但只要你嵌套在任何地方,比如'/:foo/edit',參數就不包含任何東西。我需要從嵌套路由訪問':foo' ID。 –