8

私は本当に壁にぶつかり、助けが必要です! ここまで読んでくれてありがとう!

データベース要求のために ROR Web サーバーと通信し、ActiveResource のおかげでうまく機能するアプリを作成中です。しかし、ファイルをサーバーにアップロードする必要があり、見栄えの良い ASIHTTPRequest を使用する予定ですが、私の問題は、ROR 側で POST 要求を処理する方法がわからないことです...ペーパークリップを使用していますしかし、本当にレンガの壁にぶつかりました。

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

「作成する」

どんな助けでも非常に感謝しています。

クリス

ありがとう!

4

1 に答える 1

1

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

次のようなものがある場合:

class Entry < ActiveRecord::Base
    file_column :image
end

パラメータ (フォーム フィールド名) が期待どおりのものであることを確認する必要があります。上記の例の場合、これは次のようになります。

name="entry[image]"

また、標準だけでなく、マルチパート フォームの投稿を行っていることを確認してください。

于 2009-11-07T21:11:49.607 に答える