如何为嵌套路由定义嵌套路由+ ember not rendering模板

时间:2014-11-06 05:48:49

标签: javascript ember.js routes ruby-on-rails-4.1

我有一个rails 4 + emberjs应用程序。我试图在ember中创建嵌套路由。我正在引用http://emberjs.com/guides/routing/defining-your-routes/中的“嵌套路线”部分。所有后期工作路线都很好,但“评论”的路线不起作用。我目前的余烬路线如下:

App.Router.map ->
  @resource 'posts', ->
    @route 'edit', 
      path: '/:id/edit'
    @route 'show',
      path: '/:id'
    @resource "comments", 
      path: '/:post_id/comments'
    , ->
      @route "new"

我有一个CommentsNewRoute文件:

App.CommentsNewRoute = Ember.Route.extend                                                                                                               
  model: (params) ->
    post: @store.find 'post', params.post_id

并有一个模板作为comments.handlebars包含{{outlet}}和comments / new.handlebars包含'Hello World'。将posts.handlebars和new.handlebars放在帖子模板中以及同一级别。仍然没有渲染。

link-to helper如下:

{{#link-to 'comments.new' id classNames='pull-right' }}Add New Comment{{/link-to}}

问题在于:1)CommentsNewRoute中的params是一个空对象,并且不包含post_id。 2)当我点击指向'/#/ posts / 2 / comments / new'的链接时,不会呈现新的评论模板。 3)如何在新评论页面上显示帖子的对象数据?我做错了什么?

1 个答案:

答案 0 :(得分:1)

动态细分值仅适用于动态细分所属的路线。

这意味着您应该在App.CommentsRoute上加载帖子,然后在App.CommentsNewRoutesee the example上重复使用

App.CommentsRoute = Ember.Route.extend({
    model: function (params) {
        return this.store.find('post', params.post_id); 
    }
});

App.CommentsNewRoute = Ember.Route.extend({
    model: function () {
        return this.modelFor('comments'); 
    }
});

More info