2013-11-01 80 views
0

我試圖在嵌套的路由中加載編輯表單。當我點擊編輯公司/ URL /編輯/ URL時,我得到了編輯模板,但不是我得到的單一模型:DS.RecordArray:ember314。這是一個包含我想要的一個模型對象的數組。當預計有單個記錄時,Ember返回一個數組

我注意到,ember314是在公司模板中使用的相同數組。我試着讓CompanyEditRoute的模型返回{},我可以看到模板上反映出的變化。我不知道如何獲得我想要的模型,而不是數組。

編輯

它看起來像嵌套的路線只是拿起模型排列在主要路線。這很奇怪,因爲我確認每個Route的模型方法在適當的URL被擊中時被調用。

App.Router.map(function() { 
    this.resource('companies', function() { 
    this.resource('company', { path: ':company_id' }, function() { 
     this.route('edit'); 
    }); 
    }); 
}); 


App.CompanyEditRoute = Ember.Route.extend({ 
    model: function(params) { 
    return App.Company.find(params.company_id); 
    }, 

    renderTemplate: function() { 
    this.render({into: 'application', outlet: 'modal'}); 
    } 
}); 
+1

什麼是params.company_id的價值。我懷疑它是'undefined',所以你基本上再次調用'App.Company.find()',這可能也是你的'companines'的模型 –

+0

你是對的!在這種情況下,我如何訪問我編輯路線中的company_id? –

+0

好的抓住Trek,modelFor('公司') – Kingpin2k

回答

1

只是一種預感,但是當你使用渲染你沒有指定控制器renderTemplate掛鉤,所以它可能只是被扔掉你的控制器,並使用父控制器。

查找文檔,但是我認爲這是這樣的

renderTemplate: function(controller, model) { 
    this.render({into: 'application', outlet: 'modal', controller: controller}); 
} 
+0

謝謝,kingpin2k。我通過Ember Inspector驗證是否連接了正確的控制器。如果我點擊/ companies/2,則使用company.index控制器,如果我點擊/ companies/2/edit,則使用company.edit控制器。在這兩種情況下,都會爲模型獲取DS.RecordArray。 –

相關問題