嵌入记录嵌套2层在Ember中

时间:2013-06-23 21:08:18

标签: javascript ruby-on-rails-3 ember.js ember-data

我最近发布了一个有关访问Rails关系的问题here。答案很有效,嵌入记录对任何单级嵌套属性都有效(预览问题中的示例是1个群组有很多引导)。

我无法工作的是增加第二级嵌套(一个队列有许多靴子,每个靴子都有许多集线器)。我的store.js.coffee文件中有以下扩展名。

Plato.Adapter = DS.RESTAdapter.extend()

Plato.Store = DS.Store.extend(adapter: Plato.Adapter)

Plato.Adapter.map "Plato.Cohort", 
    boots:
    embedded: "always"

Plato.Adapter.map "Plato.Boot",
  hubs:
    embedded: "load"

有没有一种简单的方法可以实现这一点(也就是说,上面的代码不起作用)?

我遇到的一个问题是在我运行

时在我的控制台中
var hub = App.Hub.find(1)

我收到以下错误

Failed to load resource: the server responded with a status of 404 (Not Found)
http://localhost:3031/hubs/1

当我的余烬路由如下

App.Router.map ()->
    this.resource('cohorts', ->
        this.resource('cohort', {path: '/:cohort_id'}, ->
        this.resource('boot', {path: '/boots/:boot_id'}, ->
                this.resource('hub', {path: '/hubs/:hub_id'})
      )
    )
  )

我的rails路由器

  resources :cohorts do
    resources :boots do
      resources :hubs
    end
  end

知道它为什么违反标准的非嵌套路线?

1 个答案:

答案 0 :(得分:1)

尝试从嵌套路径路径中删除/前缀。

App.Router.map ()->
  this.resource('cohorts', ->
    this.resource('cohort', {path: ':cohort_id'}, ->
      this.resource('boot', {path: 'boots/:boot_id'}, ->
        this.resource('hub', {path: 'hubs/:hub_id'})