【问题标题】:how to define nested routes + ember not rendering template for nested route如何定义嵌套路由+ ember不为嵌套路由渲染模板
【发布时间】:2014-11-06 05:48:49
【问题描述】:

我有一个 rails 4 + emberjs 应用程序。我正在尝试在 ember 中创建嵌套路由。我指的是http://emberjs.com/guides/routing/defining-your-routes/ 的“嵌套路由”部分。 post 的所有防御路线都可以正常工作,但“cmets”的路线不起作用。我目前的 ember 路线如下:

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

并且有一个模板作为 cmets.handlebars 包含 {{outlet}} 和 cmets/new.handlebars 包含“Hello World”。将 cmets.handlebars 和 new.handlebars 放置在帖子模板内以及同一级别。仍然没有渲染。

链接到帮助器如下:

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

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

【问题讨论】:

  • 向我们展示您的帮助者链接

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


【解决方案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

【讨论】:

    猜你喜欢
    • 2017-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-12
    • 2017-06-07
    • 2017-11-15
    • 1970-01-01
    相关资源
    最近更新 更多