我目前已设置路线,以便所有船只都位于根/
,我可以前往/boats/:boat_id
无论出于何种原因,如果我将ID设置为:boat_id
,则root将不会显示任何船只并在控制台中抛出此错误:
断言失败:无法在未定义的对象上使用'id'调用get。
如果我将其更改为:id
,则根工作正常但/boats/{any id}
不起作用。有什么想法吗?
这是我的代码:
BoatBuilder.Router.map(function() {
this.resource('boats', { path: '/' });
this.resource('boat', { path: '/boat/:boat_id' }, function() {
this.route("motor");
this.route("accessories");
});
this.route("summary");
});
BoatBuilder.BoatsRoute = Ember.Route.extend({
model: function () {
return BoatBuilder.Boat.find();
}
});
BoatBuilder.Boat = DS.Model.extend({
iem_name: DS.attr('string'),
url_text: DS.attr('string'),
price_retail: DS.attr('number')
});
答案 0 :(得分:1)
如果您的模型未在网址中使用id属性,则应在路由上定义序列化方法。请参阅http://emberjs.com/guides/routing/defining-your-routes/。
此外,如果您通过#linkTo访问/ boats /:boat_id,您还需要在路由器中添加序列化挂钩。
改编自上面粘贴的余烬指南链接,它应该是这样的:
App.Router.map(function() {
this.resource('boat', { path: '/boat/:boat_id' };
});
App.BoatRoute = Ember.Route.extend({
model: function(params) {
// the server returns
},
serialize: function(model) {
// this will make the URL `/boat/:boat_id`
return { boat_id: model.id };
}
});
您可能需要调整它以满足您的需要。
答案 1 :(得分:0)
如果我将其更改为:id,则根工作正常,但/ boats / {any id}不起作用。有什么想法吗?
使用你的实际路由器地图应该去特定的船吗?
/boat/:boat_id
所有的船都是这样的:
/
答案 2 :(得分:0)
不要认为您需要boats
的资源,因为您没有嵌套路由。所以试试:
BoatBuilder.Router.map(function() {
this.route('boats', { path: '/' });
this.resource('boat', { path: '/boat/:boat_id' }, function() {
this.route("motor");
this.route("accessories");
});
this.route("summary");
});