2011-05-05 38 views
0

iOS的新手。我有一個使用腳手架創建的Post模型的Rails博客應用程序。它有一個名稱:字符串和圖像。我正在使用ASIHTTPRequest創建一個新帖子。它連接到服務器正常,但參數「名稱」和「圖像」沒有正確傳遞到數據庫中。這裏的iphone代碼:如何從ASIHTTPRequest發送POST請求到插入DB的Rails

NSURL *url=[[NSURL alloc] initWithString:@"http://localhost:3000/posts"]; 
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; 
    [request setPostValue:@"Ben" forKey:@"name"]; 
    [request setFile:@"/Users/Seb/Desktop/beach.jpeg" forKey:@"image"]; 
    [request startSynchronous];  

這裏是Rails服務器日誌顯示:

Started POST "/posts" for 127.0.0.1 at Wed May 04 15:41:43 -0700 2011 
    Processing by PostsController#create as HTML 
    Parameters: {"name"=>"Ben", "image"=>#<ActionDispatch::Http::UploadedFile:0x103eb33a0 @content_type="image/jpeg", @original_filename="beach.jpeg", @headers="Content-Disposition: form-data; name=\"image\"; filename=\"beach.jpeg\"\r\nContent-Type: image/jpeg\r\n", @tempfile=#<File:/var/folders/PI/PI+kcHrCHfuDh-K+ppxAxE+++TI/-Tmp-/RackMultipart20110504-11613-zvv5im-0>>} 
MONGODB blog_development['posts'].insert([{"_id"=>BSON::ObjectId('4dc1d627be2eec2d5d00000f')}]) 
Redirected to http://localhost:3000/posts/4dc1d627be2eec2d5d00000f 
Completed 302 Found in 5ms 

正如你所看到的,名字和形象沒有得到插入到數據庫。當我這樣做後從瀏覽器,服務器日誌顯示:

Started POST "/posts" for 127.0.0.1 at Mon May 02 00:54:52 -0700 2011 
    Processing by PostsController#create as HTML 
    Parameters: {"commit"=>"Create Post", "post"=>{"name"=>"tiny face", "image"=>#<ActionDispatch::Http::UploadedFile:0x1042b2bb8 @content_type="image/png", @original_filename="Screen shot 2011-05-01 at 11.23.23 PM.png", @headers="Content-Disposition: form-data; name=\"post[image]\"; filename=\"Screen shot 2011-05-01 at 11.23.23 PM.png\"\r\nContent-Type: image/png\r\n", @tempfile=#<File:/var/folders/PI/PI+kcHrCHfuDh-K+ppxAxE+++TI/-Tmp-/RackMultipart20110502-11613-u7czau-0>>}, "authenticity_token"=>"i+4h+XOOuJyTnF+quru8yrBuM1ixlDXC5udYaB/0jP4=", "utf8"=>"✓"} 
MONGODB blog_development['posts'].insert([{"name"=>"tiny face", "image_filename"=>"screen_shot_2011-05-01_at_11.23.23_pm.png", "_id"=>BSON::ObjectId('4dbe634dbe2eec2d5d000002')}]) 
Redirected to http://localhost:3000/posts/4dbe634dbe2eec2d5d000002 
Completed 302 Found in 518ms 

任何想法如何構建我的職務,以使其保存到數據庫?

+0

與MongoDB無關 – 2011-05-05 09:23:53

回答

1

您將要發佈的表的名稱放在括號內的鍵名前。發佈到Rails應用時,我遇到了同樣的問題。

[request setPostValue:@"Ben" forKey:@"table [name]"]; 
[request setFile:@"/Users/Seb/Desktop/beach.jpeg" forKey:@"table [image]"]; 
+0

一旦你這樣做了,你會得到這樣的錯誤嗎? BSON :: InvalidDocument(無法將類ActionDispatch :: Http :: UploadedFile的對象序列化爲BSON。): app/controllers/posts_controller.rb:47:在'create' app/controllers/posts_controller.rb:46 :在'創建' – John 2011-05-05 21:38:53

+1

它可能不是我從工作崗位發佈的確切代碼,但我會檢查何時回家並查看我使用的代碼。 – 2011-05-06 09:14:00

+0

更正:括號內應該是圍繞字段名稱而不是表名 – 2011-05-08 18:19:30