如何为backbone.js定义嵌套资源?

cbm*_*eks 4 routes backbone.js ruby-on-rails-3

所以我有一个Rails 3.1包含嵌套资源的应用程序:

resources :projects do
  resources :todos do
    resources :tasks
  end
end
Run Code Online (Sandbox Code Playgroud)

我已经定义了我的backbone.js模型:

var Task = Backbone.Model.extend({url:'/projects/1/todos/20/tasks'})
Run Code Online (Sandbox Code Playgroud)

我现在可以创建一个新的嵌套任务,如下所示:

task.set({description:"This is backbone.js created task!!!"})
task.save()
Run Code Online (Sandbox Code Playgroud)

这真是太棒了.

但请注意,我对project/:project_id/todos/:todo_id/tasks网址进行了硬编码.当然,我可以动态生成这个,但我想知道是否有更好的方法.

谢谢你的任何建议.

Elf*_*erg 5

Backbone.Model.extend 用于创建子类,而不是对象,因此创建一个带有静态URL的新类,然后实例化它似乎是一种特别繁琐的方法.

对于这样的问题,我非常喜欢Backbone Relational,它允许你在Backbone中定义一组并行结构作为类,并让Project对象上传自己的所有关联ToDoTask对象.您只需将Projects 发送为您发送给客户端并从客户端接收的RESTful"粗略文档".有关REST的讨论,请参阅Richardson成熟度模型,因为backbone完全支持此特定模型.

另一种方法是SOAPly将更改消息作为更新发送,但这需要对Backbone的内部同步方法进行一些黑客攻击和理解.