2013-07-27 17 views
12

Ich habe gegoogled/stapelte über Stunden und fand keine Lösung für dieses Problem. Ich frage mich, ob meine Installation von PaperClip irgendwie erfolglos war. Ich versuche, ein Bild Anlage in meinen Modellen Ordner zu überprüfen:Ruby on Rails PaperClip Gem validate_attachement Fehler

validates :image, presence: true, 
content_type: { content_type: ['image/jpeg', 'image/jpg', 'image/png', 'image/gif']}, 
size: { less_than: 5.megabytes } 

ich auch Code versucht haben, mehr ähnlich zu der lesen mich auf Github-Datei:

validates_attachment :image, :presence => true, 
:content_type => { :content_type => 'image/jpeg', 'image/jpg', 'image/png', 'image/gif' }, 
:size => { less_than: => 5.megabytes } 

Und ich habe versucht, zu verwenden, individuelle Validierungen

validates_attachment_presence :image 
validates_attachment_content_type :image,:content_type => ['image/jpeg', 'image/jpg', 'image/png', 'image/gif'] 
validates_attachment_size :image,:less_than => 5.megabytes 

Ich bekomme in allen Fällen einen Fehler. Entweder:

Routing Error 
undefined method `before_image_post_process' for #<Class:0x00000101461750> 
Try running rake routes for more information on available routes. 

Oder:

NoMethodError in PinsController#index 
undefined method `key?' for nil:NilClass 

Antwort

32

Haben Sie has_attached_file :image in der Datei? Wenn ja, stellen Sie sicher, dass es vor validates_attachment ist.

+0

Sie haben Recht @savmac, Reihenfolge ist wichtig. Ich habe das gleiche Problem, aber ich erinnere mich, dass ich irgendwo gelesen habe, dass Assoziationen immer vor der Validierung sollten. – egyamado

+0

Büroklammer könnte einen besseren Fehler auslösen, wenn der Anhang nicht gefunden wird, der an "validates_attachment" übergeben wurde! – dolzenko

1

savmacs Korrektur funktionierte für mich gerade jetzt. Ich hatte das gleiche Problem auf Heroku offen. Die Linien im Modell waren vorher außer Betrieb und meine App hatte monatelang nahtlos funktioniert - weiß nicht, was sich geändert hat. Vielen Dank!

4

Ich erhalte diesen Fehler jedes Mal, nur weil ich immer vergessen, die Bildgröße die gleiche Art und Weise zu umbenennen (nachdem er aus dem Schnipsel kopieren):

has_attached_file :avatar... 

validates_attachment_content_type :photo, :content_type... 

→ Sollte auch :avatar statt :photo

Es ist ein perfektes Beispiel dafür, wie Probleme auftreten können, wenn der Code nicht DRY ist.