2012-05-11 81 views
0

這看起來像是一個問題。正常的方式骨幹工程使用相同的URL和GET,POST,PUT和DELETE。但很明顯:Backbone JS和Ruby on Rails CRUD問題

1)所有,但POST方法需要一個ID無論是在URL或請求正文

2)DELETE要求不能含有人體或某些服務器忽略身體

所以你怎麼能做出我們說一個Ruby on Rails服務器應用程序成功地與Backbone協同工作而無需破解Backbone如model.destroy()需要在URL中有ID?而且,正如我們的RoR開發者告訴我的,正常的做PUT路由的方式是在URL中也有一個ID?

回答

2

有5條路線需要實施,以利用骨幹的默認sync行爲。對於資源user,它們分別是:

GET /user/  // Get a list of users 
GET /user/:id  // Get a single users by id 
POST /user/  // Create a new user 
PUT /user/:id  // Update an existing user by id 
DELETE /user/:id // Delete an existing user by id 

我不是很熟悉Ruby on Rails的,但在他們的文檔一眼你能完成像這樣的東西規格:

match "/user/" => "users#all", :via => :get 
match "/user/:user_id" => "users#one", :via => :get 
match "/user/" => "users#create", :via => :post 
match "/user/:user_id" => "users#update", :via => :put 
match "/user/:user_id" => "users#delete", :via => :delete 
+1

你應該能夠'資源:用戶'並獲得整個事情:http://guides.rubyonrails.org/routing.html#crud-verbs-and-actions –

1

你不應該必須破解Backbone才能與RoR合作。主幹網足夠聰明,可以知道(在某種程度上)應該使用哪個URL和什麼方法。例如,對於模型的初始獲取,如果將url設置爲'/ tasks',它將對'/ tasks/id'執行GET請求。當你改變這個模型並調用model.save時,它會對'/ tasks/id'執行一個PUT請求。當你調用model.destroy時,它會發送一個DELETE請求(一個空的主體)

你必須考慮的一件事是CSRF令牌。我建議你在你的Gemfile中包含backbone-rails。它包含一些JavaScript來幫助Rails/Backbone集成。