Ember.JS:没有名为blah的路线

时间:2017-04-05 21:54:27

标签: ember.js

我收到此错误:

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有它的模型钩子。

1 个答案:

答案 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