2013-07-27 24 views
12

Mam googled/stack przepełniony godzinami i nie znalazłem rozwiązania tego problemu. Zastanawiam się, czy moja instalacja PaperClip była jakoś nieskuteczna. Próbuję potwierdzić załącznik obrazu w moim folderze modele:Ruby on Rails PaperClip Gem validate_attachement error

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

Próbowałem również kod bardziej podobny do odczytu mi złożyć na github:

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

I starałem się używać Indywidualne zatwierdzenia

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 

Występuje błąd we wszystkich przypadkach. Albo:

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

Lub:

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

Odpowiedz

32

Czy masz has_attached_file :image w pliku? Jeśli tak, upewnij się, że jest przed validates_attachment.

+0

Masz rację @savmac, kolejność jest ważna. Mam ten sam problem, ale pamiętam, że przeczytałem gdzieś, że stowarzyszenia powinny zawsze przed zatwierdzeniem. – egyamado

+0

Spinacz może podać lepszy błąd w przypadku, gdy nie uda się znaleźć załącznika przekazanego do 'validates_attachment'! – dolzenko

1

Diabelska poprawka zadziałała właśnie dla mnie. Miałem ten sam problem po otwarciu Heroku. linie w modelu były już nieczynne, a moja aplikacja działała bezproblemowo od miesięcy - nie wiem co się zmieniło. dzięki!

4

Wciąż otrzymuję ten błąd za każdym razem, tylko dlatego, że zawsze zapomnieć o zmianie nazwy zmienny obraz w ten sam sposób (po skopiowaniu z fragmentu):

has_attached_file :avatar... 

validates_attachment_content_type :photo, :content_type... 

→ Należy również :avatar zamiast :photo

Jest to doskonały przykład tego, jak mogą wystąpić problemy, gdy kod nie jest SUCHY.