2012-07-02 46 views
1

我試圖讓工作在軌道上emberjs並已按照本教程:Emberjs:的findAll方法缺少店

http://www.zhubert.com/blog/2012/04/28/ember-dot-js-and-rails-part-2/

當我嘗試在瀏覽器控制檯運行此命令:

var posts = App.store.findAll(App.Post) 

我得到一個錯誤,因爲商店沒有findAll方法。我使用的餘燼數據以及正在設置的店是這樣的:

App.store = DS.Store.extend({ 
    revision: 4, 
    adapter: DS.RESTAdapter.create() 
}); 

我一直在使用餘燼軌發電機,但整個事情似乎很古怪,請幫忙!

+0

我按照相同的教程,事實證明,我只是不得不使用'App.Post.all()'代替。 –

回答

3

當使用Ember的新路由器時,它期望您提供一個名爲App.Store的類。然後它將這個實例化爲App.router.storestore屬性也自動設置在路由器實例化的任何控制器上。

0

好了解決了這個問題。導軌生成器生成錯誤的代碼。

此:

App.store = DS.Store.extend({ 
    revision: 4, 
    adapter: DS.RESTAdapter.create() 
}); 

應該是:

App.store = DS.Store.create({ 
    revision: 4, 
    adapter: DS.RESTAdapter.create() 
}); 

另外,我可能會提到對任何人誰是有問題的,餘燼護欄發生器還產生這樣的:

App.ApplicationController = Ember.ObjectController.extend({ 

}); 

當它應該是:

App.ApplicationController = Ember.Object.extend({ 

}); 
+1

關於商店,你是對的,因爲在第一種情況下,你聲明一個類而不是實例化它。 (通常,如果你調用App.initialize(),Ember爲你做實例)。 關於控制器,請注意不要使用路由器,因爲在這種情況下,控制器必須擴展Ember.Controller,不僅僅是Ember.Object(由於ControllerMixin中定義的connectOutlet()方法)。 –

+0

有關'Ember.ObjectController'的問題在https://github.com/emberjs/ember-rails/issues/67中討論。 – pangratz