Backbone和Rails嵌套路由

Rob*_*all 10 ruby-on-rails backbone.js

我在rails中定义了以下路由:

resources :accounts do
  resources :transactions
end
Run Code Online (Sandbox Code Playgroud)

这导致网址如下:

/accounts/123/transactions/1
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以将其映射到骨干模型设置?

Rob*_*all 21

通过在模型中嵌套集合,非常容易支持这一点,如下所示:

var Account = Backbone.Model.extend({

  initialize: function() {
    this.transactions = new TransactionsCollection;
    this.transactions.url = '/account/' + this.id + '/transactions';
    this.transactions.bind("reset", this.updateCounts);
  },
});
Run Code Online (Sandbox Code Playgroud)

这实现了我想要的.

你可以在这里阅读更多相关信息:http://documentcloud.github.com/backbone/#FAQ-nested

  • 这适用于通过提取调用从后端加载的现有模型.但是我刚刚创建的模型怎么样?调用initialize方法时,在后端创建记录的ajax调用尚未完成,而`this.id`字段为`undefined`.有关如何应对这一点的任何想法? (2认同)