Может кто-нибудь помочь мне понять, как заставить скринкаст Райана Бэйта на Backbone.js работать с MongoDB в качестве моей базы данных при использовании драгоценного камня Mongoid.
Это то, что я вижу.
Когда я создаю новую запись через консоль, подобно тому, как Райан делал это в видео с entry.create
, Rails добавляет эту запись просто отлично. Ниже приведены мой журнал Ruby и мой журнал заголовков JavaScript от Chrome Inspector.
Ruby Log
Started POST "/api/entries" for 127.0.0.1 at 2012-02-12 17:31:24 -0600
Processing by EntriesController#create as JSON
Parameters: {"name"=>"Heather", "entry"=>{"name"=>"Heather", "action"=>"create", "controller"=>"entries"}}
MONGODB w_market_development['system.namespaces'].find({})
MONGODB w_market_development['entries'].insert([{"_id"=>BSON::ObjectId('4f384bcc504b9348be000003'), "name"=>"Heather"}])
Completed 201 Created in 11ms (Views: 2.4ms)
Журнал заголовков
Request URL:http://0.0.0.0:3000/api/entries
Request Method:POST
Status Code:201 Created
Request Headers (14)
Request Payload
{"name":"Heather"}
Как видите, выложено нормально. Теперь позвольте мне показать вам обновление на примере entry.save()
, который показал нам Райан.
Ruby Log
Started POST "/api/entries" for 127.0.0.1 at 2012-02-12 17:34:25 -0600
Processing by EntriesController#create as JSON
Parameters: {"_id"=>"4f38152c504b9345dc000005", "name"=>"Bloip", "winner"=>true, "entry"=>{"_id"=>"4f38152c504b9345dc000005", "name"=>"Bloip", "winner"=>true, "action"=>"create", "controller"=>"entries"}}
MONGODB w_market_development['system.namespaces'].find({})
MONGODB w_market_development['entries'].insert([{"_id"=>BSON::ObjectId('4f38152c504b9345dc000005'), "name"=>"Bloip", "winner"=>true}])
Completed 201 Created in 12ms (Views: 2.7ms)
Журнал заголовков
Request URL:http://0.0.0.0:3000/api/entries
Request Method:POST
Status Code:201 Created
Request Headers (14)
Request Payload
{"_id":"4f38152c504b9345dc000005","name":"Bloip","winner":true}
Как вы можете видеть, когда я завершаю entry.save()
для текущей записи, которая должна быть обновлением, JSON показывает POST вместо PUT, с которым Mongoid ничего не делает, а DB не показывает никаких изменений. После поиска в Google я нашел следующие статьи, но ничего не помогло.
https://github.com/codebrew/backbone-rails/issues/8
http://lostechies.com/derickbailey/2011/06/17/making-mongoid-play-nice-with-backbone-js/