Я работаю над своим первым веб-приложением с Ember.js, поддерживаемым Rails для API. У меня есть следующие вложенные ресурсы:
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);
}
});
ОБНОВЛЕНИЕ
Вот мои модели
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')
});
{{#each steps}}
, а затем{{#each candidates}}
? Это рендерингsteps
? - person claptimes   schedule 16.01.2014selection_processes/2
напрямую, он отлично работает, отображая все данные. Но если я перехожу по ссылке, чтобы отобразить другой процесс выбора (например, selection_processes/3), он ничего не возвращает, если только я не ввожу URL-адрес напрямую. - person Bernardo   schedule 16.01.2014