我有一個Ember應用程序設置,它從Rails API獲取數據。我現在有工作路線設置,但不是我想要的。當前的路由結構(餘燼應用程序)是這樣的: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參數查找節來加載模型。如果所有調查的所有部分都已加載到商店中,並且我現在增加該部分,則無論與哪個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
資源。出於某種原因,當我將它們嵌套在沒有淺層路由的情況下時,如果不嵌套嵌入UI的我的ember路由,我就無法加載正確的路由,這是我不想要的。任何人都可以給我任何提示,告訴我如何設置我的路線,而不需要軌道中的淺層路線(如果可能),以及我應該如何獲取每個路段的模型數據,以便我可以轉到相關調查的下一部分?
爲section
當前路線模型獲取這樣目前:
model(params) {
return this.store.findRecord('section', params.section_id, { reload: true });
}
感謝您的建議,這絕對是我迄今爲止發現的最有用的信息。至於路由器。js路由,我沒有這樣寫,因爲這些路由不嵌套在UI中。有單獨的頁面用於顯示初始調查詳細信息和調查中的所有部分,然後是每個部分的單獨頁面,以便路由無法嵌套,或者根據我的理解嵌套UI。 – mikeLspohn