2010-11-18 7 views
1

J'ai une erreur de confusion:Rails 3 - Paperclip: uninitialized ActionDispatch constante :: Demande :: UploadedFile

Je cours Rails 3.0.0 sur Ruby 1.9.2 avec Paperclip 2.3.5.

Lorsque je télécharge un fichier, j'obtiens une erreur 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) 

J'ai vu des choses semblables se produire avec Rails 3.0.2 et 0,3, mais je ne sais pas pourquoi il se passe ici. Con quelqu'un m'aider à trouver le problème?

Merci! Valentin

AJOUTÉE config/initializers/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

Vous voudrez peut-être regarder 'config/initializers/fix_params.rb 'puisque c'est une sorte d'extension non standard à Rails et pourrait être défectueux. Peut-être pourriez-vous modifier la question et ajouter des détails sur ce qui s'y trouve. – tadman

+0

Salut tadman, j'ai ajouté fix_params.rb à ma question. Je l'ai laissé inchangé par rapport à l'installation d'origine. –

Répondre

0

Tadman (Merci) m'a fait vers la solution: Tout ce que je devais faire était de changer la valeur de tempfile à to_tempfile. Cela ne se produira probablement pas à trop de gens, mais je pensais que je mentionnerais car il y a eu une discussion similaire à cause d'un récent changement de stable rails 3.0.3 par tenderlove, qui est philisophiquement tout à fait correct - mais a jeté certaines personnes ...

voici donc le fragment a changé de fix_params.rb

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

Cheers,

Val

Questions connexes