2

我有 2 个嵌套资源,在 Ember 路由器中发布和评论。我希望这反映网址:

/posts/1/comments/1

去这个页面应该,

  1. 使用帖子/索引模板渲染 id = 1 的帖子。
  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 回答