我正在使用Ember.js支持的Rails for API工作在我的第一個Web應用程序中。 我有以下嵌套資源:當參數更改時,Ember.js路由不會執行新請求
this.resource('selection_processes', function() {
this.resource('selection_process', { path: '/:selection_process_id' }, function() {
this.resource('candidate', { path: '/candidates/:candidate_id' });
});
})
所以,當我訪問selection_processes/1
它讓所有的候選人。這沒問題,但問題是當我點擊另一個選擇過程鏈接Ember不會執行新的請求,在我的模板中不呈現任何數據。順便說一下,API正在返回正確的對象。
我得到這個工作的唯一方法是在我的序列化程序中包含所有對象,使得Ember在一個請求中獲取整個嵌套資源的所有數據。但這似乎是一種懶惰的做法和「沉重的」。
順便說一句,這裏是我的路線:
Safira.SelectionProcessesRoute = Ember.Route.extend({
model: function() {
return this.store.find('selection_process');
}
});
Safira.SelectionProcessRoute = Ember.Route.extend({
model: function (params) {
return this.store.find('selection_process', params.selection_process_id);
}
});
Safira.CandidateRoute = Ember.Route.extend({
model: function (params) {
return this.store.find('candidate', params.candidate_id);
}
});
UPDATE
這裏是我的模型
Safira.SelectionProcess = DS.Model.extend({
beginDate : DS.attr('date'),
endDate : DS.attr('date'),
title : DS.attr('string'),
description : DS.attr('string'),
steps : DS.hasMany('Safira.Step', {async: true})
});
Safira.Step = DS.Model.extend({
realization: DS.attr('date'),
title: DS.attr('string'),
candidates: DS.hasMany('Safira.Candidate', {async: true}),
selection_process : DS.belongsTo('Safira.SelectionProcess')
});
Safira.Candidate = DS.Model.extend({
name : DS.attr('string'),
email : DS.attr('string'),
confirmation_token : DS.attr('string'),
step : DS.belongsTo('Safira.Step')
});
你能展示你的模型嗎? – claptimes
當然,我剛剛更新。 –
您能否確認您的服務器正在返回候選ID?渲染時,你是在做什麼像'{{#each steps}}'然後'{{#each candidates}}'?它渲染「steps」嗎? – claptimes