2

Ember ルーターに 2 つのネストされたリソース、Post と Comment があります。これにURLを反映させたい:

/posts/1/comments/1

このページに行くと、

  1. post/index テンプレートを使用して、id = 1 の Post をレンダリングします。
  2. コメント/インデックス テンプレートを使用して、コメント ID = 1 の投稿のコメントをレンダリングします。

これはjsbinの例です。

私のルーティングコードは、

App.Router.map(function() {
  this.resource('home', { path: '/' });
  this.resource('posts', { path: '/posts' }, function() {
    this.resource('post', { path: ':post_id' }, function() {
      this.resource('comments', { path: 'comments' }, function() {
        this.resource('comment', { path: ':comment_id' }, function() {
          // need explicit index
        });
      });
    });
  });
});

テンプレートと残りの Ember コードはほとんどストックされています。唯一の違いは/posts/1/comments/1、ホーム ルートからリダイレクトしていることです。

/index テンプレート内でレンダリングする投稿またはコメントを取得できません。投稿本文とコメント本文の両方が空白です。

メインの投稿またはコメント テンプレート内にインデックス テンプレートのコンテンツを埋め込むと機能します。しかし、これは私が必要とするものではありません。コメントは投稿内にネストする必要があります。

これを機能させる方法はありますか?ありがとう。

PS: 私は ember-latest と ember-data latest を使用しています。

4

1 に答える 1

3

通常、この種の問題は命名規則に帰着します。おそらく ember は、予期しないコントローラーとテンプレートを探しています。以下をアプリケーションに追加してから、コンソールを監視してみてください。どのルート/コントローラー/テンプレートが使用されているかを確認するのに役立ちます。

App = Ember.Application.create({
  LOG_ACTIVE_GENERATION: true,
  LOG_TRANSITIONS: true,
  LOG_VIEW_LOOKUPS: true
});

また、これらのルートはおそらく必要以上に複雑です。通常、「post」ルートが「posts」リソース内にネストされることは意味がありません。コメント/コメントについても同様です。代わりにこれを試してください:

App.Router.map(function() {
  this.route('posts');
  this.resource('post', { path: '/posts/:post_id' }, function() {
    this.route('comments')
    this.resource('comment', { path: '/comments/:comment_id' });
  });
});
于 2013-06-23T16:07:38.273 に答える