Ember深嵌套URLS和模型

时间:2014-10-24 19:03:54

标签: ember.js ember-cli

我的应用程序中有一个相当复杂的路由器,我有一个奇怪的问题,深度嵌套我的路由和资源。

我的路由器有问题的部分如下:

this.resource('condominiums', function(){
        this.route('index', {path: '/'});
        this.route('new');
        this.route('edit', {path: 'edit/:id'});
        this.resource('condominium', {path: '/condominium/:id'}, function(){
            this.resource('blocks', {path: '/blocks'}, function(){
                this.resource('block', {path: '/block/:id'}, function(){
                    this.resource('units', {path: '/units'}, function(){
                    });
                });
            });
        });
    });

我的模板尽可能正确地相互嵌套,一切正常,直到我尝试在最深的部分使用链接到:

{{#each block in blocks}}
  <tr>
    <td>
    {{#link-to 'block.index' block}}{{block.name}}{{/link-to}}
    </td>
  </tr>
{{/each}}

问题是动态段似乎是错误的,并且URL的构建总是基于更改公寓ID的块的ID以及块的ID时块的ID应该是变化

结果是一个类似于:condominiuns/2/blocks/2

的网址

而不是正确的:condominiuns/1/blocks/2

我尝试将2个模型传递给link-to helper,同样的事情发生了。 提前谢谢!

1 个答案:

答案 0 :(得分:1)

您需要重命名路径的动态细分。通常使用资源名称作为id的前缀。您的示例中的一些摘录已重写:

this.resource('condominium', {path: '/condominium/:condominium_id'} //...

this.resource('block', {path: '/block/:block_id'} //...