処理に Carrierwave を使用する作業中の Rails アプリケーションに、iPhone から画像をアップロードしようとしています。Rails が必要とする CSRF 認証トークンを考慮する必要がありますか?
私のTitanium app.jsファイルには、Snapostのサンプルコードからかなり抜粋したものがあります:
xhr.open('POST','http://myapp.com/foos/1/bars');
xhr.send({media:originalImage});
私のレールアクションはとてもシンプルです:
def create
@bar = @foo.bars.build(params[:bar])
@bar.image = params[:file]
respond_to do |format|
if @bar.save
format.html { redirect_to(@foo, :notice => 'Bar was successfully created.') }
format.json { render :json => @bar, :status => :created }
fotmat.xml { render :xml => @bar, :status => :created }
else
format.html { render :action => "new" }
format.json { render :json => @bar.errors, :status => :unprocessable_entity }
format.xml { render :xml => @bar.errors, :status => :unprocessable_entity }
end
end
end
私のデバイスから、アップロードしようとするとタイムアウトを説明する「xhr.onerror」アラートが表示されます。私のサーバーログは次のとおりです。
2011-05-01 17:01:33 -0500 に ###.###.### の POST "/foos/1/bars" を開始しました BarsController#create as MULTIPART_FORM による処理 パラメータ: {"media"=#<ActionDispatch::Http::UploadedFile:0xabdd968 @original_filename="285050.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name= \"メディア\"; ファイル名=\"2 85050.jpg\"\r\nContent-Type: image/jpeg\r\n", @tempfile=#<ファイル:/tmp/RackMultipart20110501-32635-olgooh>>, "foo_id"=>"1"} ^[[1m^[[36mSQL (1.9ms)^[[0m ^[[1mSHOW TABLES^[[0m ^[[1m^[[35mFoo ロード (0.1ms)^[[0m SELECT foos.* FROM foos WHERE foos.id = 1 LIMIT 1 ^[[1m^[[36mSQL (2.6ms)^[[0m ^[[1mBEGIN^[[0m ^[[1m^[[35mSQL (5.9ms)^[[0m ROLLBACK 468ms で 406 Not Acceptable を完了