2013-04-22 66 views
1

我想我有Ember的嵌套資源(master-detail)。但我試圖繼續更深一層的巢,但通過我的數據中的has_many關係。我使用EmberData和Rails作爲API,我相信它是按照預期設置和工作的。但嵌套向下一個級別在我的模板和路由器被絆倒我,我似乎無法找到的例子在那裏......通過與EmberData和rails API的簡單關係嵌套路線?

這是我目前的路由器(使用RC1,我認爲):

EmberGallery.Router.map(function() { 
    this.resource('uploads', function() { 
    this.resource('upload', { path: ':upload_id' }); 
    }); 
    this.resource('collections', function() { 
    this.resource('collection', { path: ':collection_id' }); 
    this.route('new'); 
    }); 
}); 

其中產生:

/#/uploads/1 
/#/collections/1 

很好,真棒。但是,在我的應用程序的集合has_many上傳,所以我試圖去這個網址(主 - 從):

/#/collections/1/2 

ID:1是collection_id(其中包含了一堆上傳的,這 偉大工程)

ID:2作爲一個upload_id(我怎麼在這得到)

將我的路由器是什麼樣的?還有什麼需要這個工作?

編輯:我添加了我的集合模板,它顯示並鏈接到屬於單一集合的上傳。基本上這會正確顯示關聯的上傳,但鏈接將我帶回#/ uploads/1而不是#/ collections/1/2(其中2是集合1中的上傳)。顯然我的鏈接是錯誤的,但我懷疑我的真正問題是我拉着一個集合的上傳是不正確的。

模板/ collection.js.hbs

<aside class="span8"> 
    <header> 
    <h4>Collection: {{title}}</h4> 
    </header> 
    <ul class="thumbnails"> 
     {{#each upload in uploads}} 
     <li class="span3"> 
      <aside class="thumbnail"> 
     {{#linkTo 'upload' this}}<img {{bindAttr src="upload.url"}} alt="{{upload.title}}">{{/linkTo}} 
      {{title}} 
      </aside> 
     </li> 
     {{/each}} 
    </ul> 
</aside> 
<article class="span4"> 
    {{outlet}} 
</article> 

回答

0

你必須讓你的路線collections.collection資源有這種URL的。要做到這一點:

EmberGallery.Router.map(function() { 
    this.resource('uploads', function() { 
     this.resource('upload', { path: ':upload_id' }); 
    }); 
    this.resource('collections', function() { 
     this.resource(
      'collection', 
      { path: ':collection_id' }, 
      function() { 
       this.route('upload', { path: ':upload_id' }); 
      } 
     ); 
     this.route('new'); 
    }); 
}); 

您將有隱式創建的路線collection.index(不collections.collection.index)。 網址/collections/1/2將以路線collection.upload爲目標。

+0

嗨,謝謝你。這似乎是有道理的。不幸的是,我似乎有其他問題與我的模板命名,也許使用我的控制器,因爲我無法得到這個工作......我要將我的收藏模板添加到我原來的職位。 – 2013-04-25 16:12:36

+0

選中此項:[JS Bin](http://jsbin.com/odovul/19/)。 – Costent 2013-04-28 15:51:05