Ember アプリケーションに次のルートがあるとします。
App.Router.map(function() {
this.resource('series', function() {
this.resource('serie', { path: '/:serie_id' }, function() {
this.resource('seasons', function() {
this.resource('season', { path: '/:season_id' }, function() {
this.resource('episodes', function() {
this.resource('episode', { path: '/:episode_id' });
})
});
});
});
});
});
Handlebars が提供するヘルパーを使用して特定のエピソードにリンクするにはどうすればよいですか? linkTo
言い換えると、Ember は URL の他のパラメーター、つまり と がどうあるべきかをどのように判断しserie_id
ますepisode_id
か? ドキュメントには、以下に示すようepisode
にモデルをepisode
ルートに渡す必要があると記載されています。
{{#linkTo "episode" episode}}
これは、次の URL 構造にリンクするためのものです。
/series/:serie_id/seasons/:season_id/episodes/:episode_id/
そのようなヘルパーを使用するlinkTo
と、Ember は on で呼び出すことができないというエラーをスローget
しid
ますundefined
。モデルを使用してandがepisode
何であるかを把握していると思いますが、Ember がこれらの を見つけるには、モデルが特定の規則 (構造または設計図) に準拠する必要があると推測します。serie_id
episode_id
id
これらは、私が Ember で最も難しいと思う側面です。Ember をデバッグ モードで使用しても、あまり透過的ではありません。ポインタや参照は大歓迎です。
serialize
更新 1: 掘り下げた結果、ルートのメソッドがこれを達成するための重要な要素であることがわかりました。しかし、linkTo
上の図のようにヘルパーを使用すると、ルートのserialize
メソッドに渡されるモデルがundefined
何らかの理由で (ヘルパーに渡されたときではないにもかかわらず) ですlinkTo
。この発見につながった質問は、こちらにあります。
serieSeason
更新 2: リンクが生成されたときに、ルートのserialize
メソッドが間違ったモデル (シーズンではなくエピソード) を受け取ることが判明しました。ただし、なぜ間違ったモデルを受け取っているのかは明らかではありません。メソッドのmodel
パラメータはどこから来ますか?serialize
更新 3:関連する各ルートlinkTo
のメソッドから静的データを返すと、ヘルパーは正常に動作します。これは、ヘルパーが問題に関与していないことを意味します。serialize
linkTo