У меня есть настройка приложения Ember, которая получает его данные из Rails API. У меня есть настройка маршрута прямо сейчас, когда работа, но не то, как я хочу. Действующая структура маршрута (для приложения Ember) заключается в следующем:Ember настройка маршрутов для получения связанных данных из rails api
//router.js
Router.map(function() {
this.route('surveys');
this.route('survey', { path: 'surveys/:survey_id' }, function() {
this.route('sections', { path: '/sections' });
});
this.route('section', {path: 'surveys/:survey_id/sections/:section_id'}, function() {
this.route('survey_items', { path: 'survey-items' });
});
});
В моделях у меня есть исследования, и каждый опрос имеет много разделов, и каждый раздел имеет много пунктов обследования. То, как он сейчас настраивается, но я считаю, что если я перейду на маршрут section
, я хочу иметь следующую кнопку, которая при нажатии на нее перейдет к следующему разделу этого опроса. Прямо сейчас я не могу сделать это правильно, потому что мой маршрут section
загружает модель, просто найдя раздел переданным в id param. Если все разделы для всех опросов уже загружены в хранилище, и я увеличиваю этот раздел прямо сейчас, он переходит к следующему разделу независимо от того, с каким объектом survey_id он связан. Я не могу понять, как лучше настроить мои маршруты, чтобы сделать эту работу.
Рельсы API маршруты выглядеть это прямо сейчас:
routes.rb
namespace :api do
namespace :v1 do
resources :surveys, shallow:true do
resources :sections, shallow: true do
resources :survey_items, path: '/survey-items'
end
end
end
end
Как вы можете видеть, на маршрутах Rails я поставил shallow: true
на surveys
и sections
ресурсов. По какой-то причине, когда я имел их вложенные без мелких маршрутов, я не мог заставить ember загружать правильный маршрут, не вставляя мои маршруты ember, который гнездится в пользовательском интерфейсе, чего я не хочу. Может ли кто-нибудь дать мне какие-либо советы о том, как я могу настроить маршруты, не требуя мелких маршрутов в рельсах (если это возможно) и как я должен получать данные модели для каждого раздела, чтобы я мог перейти к следующему разделу в соответствующем опросе?
Текущая модель маршрутов для section
забираются, как это в настоящее время:
model(params) {
return this.store.findRecord('section', params.section_id, { reload: true });
}
Спасибо за совет, это определенно самая полезная информация, которую я нашел на этом пока. Что касается маршрутизатора.js, я не писал их так, потому что эти маршруты не вложены в пользовательский интерфейс. Существуют отдельные страницы для отображения исходных данных опроса и всех разделов в опросе, а затем отдельных страниц для каждого раздела, чтобы маршруты не могли быть вложенными или пользовательский интерфейс был вложен из моего понимания. – mikeLspohn