2010-11-18 5 views
1

私は混乱のエラーを持っている:Railsの3 - ペーパークリップ:初期化されていない定数ActionDispatch ::要求::にUploadedFile

私はRubyの上のRails 3.0.0を実行するには、ペーパークリップ2.3.5と1.9.2。

ファイルをアップロードすると、500エラーが発生します。

NameError (uninitialized constant ActionDispatch::Request::UploadedFile): 
    config/initializers/fix_params.rb:13:in `normalize_parameters' 
    config/initializers/fix_params.rb:19:in `block in normalize_parameters' 
    config/initializers/fix_params.rb:19:in `each' 
    config/initializers/fix_params.rb:19:in `normalize_parameters' 
    config/initializers/fix_params.rb:19:in `block in normalize_parameters' 
    config/initializers/fix_params.rb:19:in `each' 
    config/initializers/fix_params.rb:19:in `normalize_parameters' 

Rendered /Users/vjmayr/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-3.0.0/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (10.2ms) 

私が見てきた同様のことは、Railsの3.0.2と0.3で起こるが、それはここではなぜ起こるか私にはわかりません。誰も私の問題を見つけるのを助ける?

ありがとうございます!バレンティン

ADDEDの設定/初期化子/ fix_params.rb:

module ActionController 
    class Request 
    private 

     # Convert nested Hashs to HashWithIndifferentAccess and replace 
     # file upload hashs with UploadedFile objects 
     def normalize_parameters(value) 
     case value 
     when Hash 
      if value.has_key?(:tempfile) 
      upload = value[:tempfile] 
      upload.extend(UploadedFile) 
      upload.original_path = value[:filename] 
      upload.content_type = value[:type] 
      upload 
      else 
      h = {} 
      value.each { |k, v| h[k] = normalize_parameters(v) } 
      h.with_indifferent_access 
      end 
     when Array 
      value.map { |e| normalize_parameters(e) } 
     else 
      value.force_encoding(Encoding::UTF_8) if value.respond_to?(:force_encoding) 
      value 
     end 
     end 
    end 
end 
+1

'これはRailsの非標準的な拡張であり、誤動作の可能性があります。たぶんあなたは質問を修正し、そこにあるものの詳細を追加することができます。 – tadman

+0

こんにちはtadman、私は私の質問にfix_params.rbを追加しました。私は元のインストールからそれをそのまま残しました。 –

答えて

0

tadman(!おかげで)右の解決に向けて私を指摘: 私がしなければならなかったすべてがto_tempfileする一時ファイルから値を変更しました。これはあまりにも多くの人々に起こることはありませんが、私は、近年、安定したレール3.0.3の最近の変更により、それは同様の議論がありましたので言及したいと思いました。一部の人は...

だからここはfix_params.rbの変更フラグメントである

... 
if value.has_key?(:to_tempfile) 
     upload = value[:to_tempfile] 
... 

乾杯、

ヴァル

あなたがの `config /初期化子/ fix_params.rbで見たいと思うかもしれません
関連する問題