2014-05-06 32 views
0

我正試圖改善我的應用程序用戶模型中使用燈具的缺陷。我一直在關注fixtures, as well as associated links for model development上的文檔。問題是,我一直運行到cannot GET /user/Administrator我已經使用自耕農生成一個燼項目,而是通過讓走我有:不瞭解餘燼中的燈具

安裝App

var EW = window.EW = Ember.Application.create(); 

安裝夾具(商店.js文件)

EW.ApplicationAdapter = DS.FixtureAdapter; 

/* I need a fixture. */ 
EW.User.FIXTURES = [ 
    { 
     "user":{ 
      "id":1, 
      "first_name":"Adam", 
      "email":"[email protected]", 
      "last_name":"Balan", 
      "user_name": "Administrator", 
      "role_names":[ 
      "Administrator" 
      ], 
      "blogs":[ 
      { 
       "id":2, 
       "title":"Blog Title", 
       "posts":[ 
        { 
         "id":1, 
         "title":"Something", 
         "content":"Some Content", 
         "tag_names":[ 
         "Some Tag", 
         "Other Tag" 
         ], 
         "category_names":[ 
         "Some Category", 
         "Another Category" 
         ], 
         "blog_id":2, 
         "comments":[ 
         { 
          "id":1, 
          "post_id":1, 
          "author":"Adam", 
          "comment":"This is a valid long comment." 
         } 
         ] 
        } 
       ] 
      } 
      ] 
     } 
    } 
] 

型號

var attr = DS.attr; 

// Set up the user model and it's relationships. 
EW.User = DS.Model.extend({ 
    first_name: attr('string'), 
    last_name: attr('string'), 
    user_name: attr('string'), 
    blogs: DS.hasMany('blog'), 
    role: DS.hasMany('roles'), 

    // Create full names for every one. 
    fullName: function(){ 
     return this.get('first_name') + ' ' + this.get('last_name'); 
    }.property('first_name', 'last_name') 

}); 

路由器

EW.Router.map(function(){ 
    this.resource('user', { path: '/user/:user_name' }); 
}); 

EW.UserRoute = Ember.Route.extend({ 
    model: function(params){ 
     return jQuery.getJSON("/user/" + params.user_name); 
    } 

    serialize: function(model){ 
     return { user_name: model.get('user_name') } 
    } 
}); 

至於我可以告訴大家我已經正確地做了一切。引發錯誤:

Cannot GET /user/Administrator

,我不知道如果我沒能很好地安排時間。控制檯給我沒有錯誤,燼控制檯不會加載,因爲這個錯誤,網絡標籤給我一個404的localhost:9000/user/Administrator

想法?

回答

1

你要打電話return this.get('store').find('user', params.user_id)模型中的鉤:

EW.Router.map(function() { 
    this.resource('user', { path: '/users/:user_id' }); 
}); 

EW.UserRoute = Ember.Route.extend({ 
    model: function(params) { 
    return this.get('store').find('user', params.user_id); 
    } 
}); 

請注意,這是user_id而非user_name。這是因爲夾具適配器被硬編碼以通過它們的id而不是名稱來查找記錄。我建議使用名稱的網址友好形式作爲ID。

+0

當我這樣做,它尖叫着我:'加載路由時出錯:錯誤:id屬性必須定義爲數字或字符串夾具' – user3379926

+0

這裏是一個jsbin:http://emberjs.jsbin.com/ zipan/4/edit?html,js,輸出 –

+0

您可能會發現它正在抱怨,因爲它無法加載相關的作業和角色。 –