2009-11-07 4 views
8

私は本当に壁に当たって助けが必要です!これまでの読んでいただきありがとうございます!ASIHTTPRequestを使ってiPhoneからRuby on Railsにアップロード

私はROR Webサーバーとデータベース要求を話し合うアプリケーションを作成中で、ActiveResourceに大きな感謝の意を表します。しかし、私は今もサーバにファイルをアップロードする必要があります。私はROR側でPOST要求をどうやって手渡すべきか分かりませんが、私の問題は素晴らしいと思われるASIHTTPRequestを使用する予定です...私はpaperclipを使用しています本当にレンガの壁に当たった。私は単純に書いているASIHTTP側で

[request setData:data withFileName:@"photo.jpg" andContentType:@"image/jpeg" forKey:@"asset[image]"]; 

と私がやっているルビー側の

...

class Asset < ActiveRecord::Base 
    validates_attachment_presence :image 
    has_attached_file :image 
end 

class AssetsController < ApplicationController 
    protect_from_forgery :only => [:update, :destroy] 
..... 

しかし、それは常に失敗したが、私はかなり確信していますPOSTフォームのデータセットとは何か関係がありますが、私は完全に固執しています。すべてのヘルプは非常に非常に感謝して受信されるだろう

Parameters: {"assets"=>{"images"=>#<File:/var/folders/gM/gM15qjM2G3W0iVNaT1evD++++TI/-Tmp-/RackMultipart20091112-2285-2i0qq5-0>}} 

NoMethodError (You have a nil object when you didn't expect it! 
You might have expected an instance of ActiveRecord::Base. 
The error occurred while evaluating nil.[]): 
    app/models/asset.rb:2 
    app/controllers/assets_controller.rb:46:in 

`create'

私はエラーを取得しています。

クリス

ありがとう!

答えて

1

私がアップロードを行うことで最初に確認するのは、file_column(または、個人的には私がPaperclipを使用するもの)が何を期待しているのかをパラメータ名に設定することです。

あなたはのようなものがある場合:

class Entry < ActiveRecord::Base 
    file_column :image 
end 

をあなたは、パラメータ(フォームフィールド名)が期待されているものに対応を確認する必要があります。上記の例では、これは次のようになります。

name="entry[image]" 

はまた、あなたがマルチパートフォームポストだけでなく、標準をやっていることを確認してください。

+1

また、[setPostValue:@ "Create" forKey:@ "commit"]を含める必要があることがわかりました。 – Chris

関連する問題