我收到此错误:
Assertion Failed: You attempted to define a `{{link-to "companies.show"}}` but did not pass the parameters required for generating its dynamic segments. There is no route named companies.show
但是我确实在router.js
中有这条路线,并且在我添加两条新路线以及一个用于编辑/添加记录的组件之前一直在工作。但它现在确实消失了 - 我也可以直接导航它。所以我认为我在我的不同部分有一个错误,就是我的路线多米诺骨牌。
// router.js
Router.map(function() {
this.route('states');
this.route('companyTypes');
this.route('companies', function() {
this.route('show', {path: '/:company_id'});
this.route('new');
this.route('edit', {path: '/:company_id'});
});
this.route('counties', {path : '/counties/:state'});
});
// routes/companies.js
export default Ember.Route.extend({
model() {
return this.get('store').findAll('company');
}
});
// routes/companies/show.js
export default Ember.Route.extend({
model(params) {
return this.get('store').findRecord('company', params.company_id);
}
});
我在link-to
中传递了模型参数,并且show route有它的模型钩子。
答案 0 :(得分:2)
好的,问题是我在router.js
中重复了相同的路由// router.js
this.route('companies', function() {
this.route('show', {path: '/:company_id'});
this.route('new');
this.route('edit', {path: '/:company_id'});
});
显示和编辑都有相同的路线:如果您导航到http://localhost:4200/companies/1
,您应该去显示还是编辑?编辑覆盖显示,因为它是最后一次。编辑后移动节目:
// router.js
this.route('companies', function() {
this.route('new');
this.route('edit', {path: '/:company_id'});
this.route('show', {path: '/:company_id'});
});
show开始工作,但编辑会中断。
所以你需要做这样的事情:
// router.js
this.route('companies', function() {
this.route('new');
this.route('edit', {path: '/edit/:company_id'});
this.route('show', {path: '/:company_id'});
});
您的路线现在是:
http://localhost:4200/companies/1
http://localhost:4200/companies/edit/1