更新: rc3 にアップグレードしましたが、問題は解決しません。2 回目の linkTo クリックが成功することがわかりました。
Ember.js v1.0.0-rc.3
コンテキストのために、ネストされたリソースを持つ私のルーター:
App.Router.map(function(match) {
this.resource('items', function() {
this.resource('item', { path: ':item_id' }, function() {
this.resource('images', function() {
this.resource('image', { path: ':image_id' });
});
});
});
});
「/items」を最初のアイテム「/items/1」にリダイレクトしたい
App.ItemsRoute = Em.Route.extend({
model: function() {
return App.Item.find({});
},
redirect: function() {
var item = this.modelFor('items').get('firstObject');
this.transitionTo('item', item);
}
});
問題: /items をヒットすると、次のエラーが発生します。
Error: assertion failed: Cannot call get with 'id' on an undefined object.
注: 私の ItemIndexRoute も、アウトレットに最初の画像を表示するためにリダイレクトしています。
App.ItemIndexRoute = Em.Route.extend({
model: function(params) {
return App.Item.find(params.item_id);
},
redirect: function(params) {
var image = App.Image.find(params.item_id).get('firstObject');
this.transitionTo('images');
}
});
ItemIndexRoute のリダイレクトを削除すると、代わりに /items で次のようになります。
警告: 直接の親ルート ('a') はメイン アウトレットにレンダリングされず、デフォルトの 'into' オプション ('p') は予期されない可能性があります ember.js:349Transitioned into 'items.item.index'