Je crée une application de blog de base avec des rails/back-end MongoId et un client iOS qui a un modèle de messages avec le nom et l'image. Je reçois l'erreur suivante lorsque je crée un nouveau pos à partir d'une application iOS.BSON :: InvalidDocument lors de l'insertion dans MongoDB d'iOS client
BSON::InvalidDocument
(Cannot serialize an object of class ActionDispatch::Http::UploadedFile into BSON.):
app/controllers/posts_controller.rb:47:in `create'
app/controllers/posts_controller.rb:46:in `create'
Du côté iOS J'utilise ASIHttpRequest avec le code suivant:
NSURL *url=[[NSURL alloc] initWithString:@"http://localhost:3000/posts"];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:@"Ben" forKey:@"[post] name"];
[request setFile:@"/Users/Seb/Desktop/beach.jpeg" forKey:@"[post] image"];
[request startSynchronous];
Le journal du serveur montre:
Started POST "/posts" for 127.0.0.1 at Thu May 05 14:37:10 -0700 2011
Processing by PostsController#create as HTML
Parameters: {"post"=>{" name"=>"Ben", " image"=>#<ActionDispatch::Http::UploadedFile:0x103e48fc8 @content_type="image/jpeg", @original_filename="beach.jpeg", @headers="Content-Disposition: form-data; name=\"[post] image\"; filename=\"beach.jpeg\"\r\nContent-Type: image/jpeg\r\n", @tempfile=#<File:/var/folders/PI/PI+kcHrCHfuDh-K+ppxAxE+++TI/-Tmp-/RackMultipart20110505-11613-x75qie-0>>}}
Completed in 21ms
BSON::InvalidDocument (Cannot serialize an object of class ActionDispatch::Http::UploadedFile into BSON.):
app/controllers/posts_controller.rb:47:in `create'
app/controllers/posts_controller.rb:46:in `create'
Rendered /Library/Ruby/Gems/1.8/gems/actionpack-3.0.6/lib/action_dispatch/middleware/templates/rescues/_trace.erb (2.3ms)
Rendered /Library/Ruby/Gems/1.8/gems/actionpack-3.0.6/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (9.5ms)
Il faut sauver la image réelle dans le dossier des images de mon application rails. Je ne stocke pas l'image dans Mongo, juste l'adresse de l'image. Je soumets fondamentalement un pour créer un nouveau message suivant les instructions pour ASIFormDataRequest – John
Je recevais ce problème par une faute de frappe dans mon nom d'entrée de formulaire "imamge" au lieu de "image". TTT ... TTT. –