EmberJS 2.7 断言传递嵌套对象的 id 失败
EmberJS 2.7 assertion failed passing id of nested object
EmberJS 2.7
错误:
断言失败:传递给 findRecord()
的 id
必须是非空字符串或数字
app/templates/products/index.hbs:
[在 model/each 循环中我有这一行]:
{{#link-to 'categories.edit' product.category.id}}<a href="">{{product.category.name}}</a>{{/link-to}}
app/router.js:
[我定义了这些路线]:
this.route('products', function() {
this.route('new');
this.route('edit', { path: '/:product_id/edit' });
});
this.route('categories', function() {
this.route('new');
this.route('edit', { path: '/:category_id/edit' });
});
编辑产品时有效。但是在尝试编辑类别时抛出上述错误。
如果我删除 'categories/edit' 路由并改为添加此路由:
this.route('category', { path: '/categories/:category_id/edit' });
并更改模板以使用:
{{#link-to 'category' product.category.id}}<a href="">{{product.category.name}}</a>{{/link-to}}
然后就可以了。我明白为什么第二个有效。 但是为什么第一个不行呢?
编辑:这是模型
app/models/product.js:
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr('string'),
description: DS.attr('string'),
category: DS.belongsTo('category', { async: true })
});
app/models/category.js:
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr('string'),
products: DS.hasMany('product')
});
已修复。在模型上放置 findRecord 的位置很重要。我在类别路线中有这段代码。将其移动到正确的文件即可解决问题。
app/routes/categories.js:
import Ember from 'ember';
export default Ember.Route.extend({
model(params) {
return this.store.findRecord('category', params.category_id);
},
});
解决方案:
app/routes/categories.js:
import Ember from 'ember';
export default Ember.Route.extend({
});
app/routes/categories/edit.js:
import Ember from 'ember';
export default Ember.Route.extend({
model(params) {
return this.store.findRecord('category', params.category_id);
},
});
EmberJS 2.7
错误:
断言失败:传递给 findRecord()
的 id
必须是非空字符串或数字
app/templates/products/index.hbs: [在 model/each 循环中我有这一行]:
{{#link-to 'categories.edit' product.category.id}}<a href="">{{product.category.name}}</a>{{/link-to}}
app/router.js: [我定义了这些路线]:
this.route('products', function() {
this.route('new');
this.route('edit', { path: '/:product_id/edit' });
});
this.route('categories', function() {
this.route('new');
this.route('edit', { path: '/:category_id/edit' });
});
编辑产品时有效。但是在尝试编辑类别时抛出上述错误。
如果我删除 'categories/edit' 路由并改为添加此路由:
this.route('category', { path: '/categories/:category_id/edit' });
并更改模板以使用:
{{#link-to 'category' product.category.id}}<a href="">{{product.category.name}}</a>{{/link-to}}
然后就可以了。我明白为什么第二个有效。 但是为什么第一个不行呢?
编辑:这是模型
app/models/product.js:
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr('string'),
description: DS.attr('string'),
category: DS.belongsTo('category', { async: true })
});
app/models/category.js:
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr('string'),
products: DS.hasMany('product')
});
已修复。在模型上放置 findRecord 的位置很重要。我在类别路线中有这段代码。将其移动到正确的文件即可解决问题。
app/routes/categories.js:
import Ember from 'ember';
export default Ember.Route.extend({
model(params) {
return this.store.findRecord('category', params.category_id);
},
});
解决方案:
app/routes/categories.js:
import Ember from 'ember';
export default Ember.Route.extend({
});
app/routes/categories/edit.js:
import Ember from 'ember';
export default Ember.Route.extend({
model(params) {
return this.store.findRecord('category', params.category_id);
},
});