2011-07-27 94 views
4

所以我有一個Rails 3.1應用程序,包含嵌套資源:如何爲backbone.js定義嵌套資源?

resources :projects do 
    resources :todos do 
    resources :tasks 
    end 
end 

我定義我的backbone.js車型,如:

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

我現在可以創建一個新的嵌套任務簡單,如:

task.set({description:"This is backbone.js created task!!!"}) 
task.save() 

這是非常棒的。

但是請注意,我對project/:project_id/todos/:todo_id/tasks網址進行了硬編碼。 當然,我可以動態生成這個,但我想知道是否有更好的方法。

感謝您的任何建議。

+0

看看這個答案,並看看是否有幫助: http://stackoverflow.com/questions/6734789/backbone-set-collection-attribute-for-the-url/6735023#6735023 –

回答

5

Backbone.Model.extend用於創建子類而不是對象,因此創建一個帶有靜態URL的新類然後實例化它似乎是一個特別有效的方法。

對於這樣的問題,我很喜歡的Backbone Relational,它允許你定義一組並行結構作爲主幹課程,並有Project對象上傳本身及其所有相關ToDoTask對象。您只會發送Project作爲您發送給客戶端並從客戶端接收的RESTful「粗略文檔」。有關REST的討論,請參閱The Richardson Maturity Model,因爲主幹完全支持此特定模型。

另一種方法是將更改消息作爲更新SOAP進行發送,但這需要對Backbone的內部同步方法進行一些攻擊和理解。