在Backbone.js的,我更新的分類模型(未找到PUT路線):更新模型W/Backbone.js的+ Rails的工作不
@category.save {
name : category_name,
}
這節省了罰款和骨幹正確更新集合。但是在鐵軌上服務器端它不是因爲路由錯誤的節約:
Started PUT "/categories" for 127.0.0.1 at 2011-05-24 11:18:16 -0400
ActionController::RoutingError (No route matches "/categories"):
的問題是,軌預計PUT /更新有一個網址,包括id爲「/類別/:ID」,不只是「/類別「
我測試了這一點通過改變模型網址:
class Category extends Backbone.Model
name: 'category'
url: ->
host + '/categories'
到
class Category extends Backbone.Model
name: 'category'
url: ->
host + '/categories/2'
這工作正常。
Started PUT "/categories/2" for 127.0.0.1 at 2011-05-24 11:44:08 -0400
Processing by CategoriesController#update as JSON
Parameters: {"category"=>{"created_at"=>2010-03-14 16:30:07 -0400, "id"=>2, "name"=>"Lunchr5", "updated_at"=>2010-03-14 16:30:07 -0400, "user_id"=>1}, "api_key"=>"s1boakDIav30V6DzOFsY", "id"=>"2"}
User Load (0.2ms) SELECT `users`.* FROM `users` WHERE `users`.`single_access_token` = 's1boakDIav30V6DzOFsY' LIMIT 1
User Load (0.3ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1
SQL (0.1ms) BEGIN
AREL (0.3ms) UPDATE `users` SET `visit_count` = 11, `perishable_token` = 'YG3s4yB01FxUMdMcK8m', `updated_at` = '2011-05-24 15:44:08' WHERE `users`.`id` = 1
SQL (0.3ms) COMMIT
Option Load (0.3ms) SELECT `options`.* FROM `options` WHERE (`options`.user_id = 1) LIMIT 1
Category Load (0.2ms) SELECT `categories`.* FROM `categories` WHERE `categories`.`id` = 2 LIMIT 1
SQL (0.1ms) BEGIN
Category Load (13.1ms) SELECT `categories`.`id` FROM `categories` WHERE `categories`.`user_id` = 1 AND (`categories`.`name` = BINARY 'Lunchr5') AND (`categories`.id <> 2) LIMIT 1
AREL (0.3ms) UPDATE `categories` SET `name` = 'Lunchr5', `updated_at` = '2011-05-24 15:44:09' WHERE `categories`.`id` = 2
SQL (0.3ms) COMMIT
Redirected to http://localhost:3000/categories
Completed 302 Found in 179ms
是否必須破解骨幹網才能將該id添加到網址或我缺少什麼?
迄今爲止我讀過的最好的解釋! +1 – ezmilhouse 2012-04-03 19:31:10
+1爲一個偉大的答案。這些東西應該在文檔或維基的「最佳實踐」部分中明確說明。 – sa125 2012-09-22 15:59:07
我真的很驚訝。爲了確認,如果你想實現一個PUT請求,你將不得不寫這個'u ='鏈。這似乎有點不成熟。 – Trip 2013-12-05 13:26:05