Ошибка проверки содержания Rails Paperclip content_type после преобразования и отображения неправильной ошибки - PullRequest
0 голосов
/ 15 марта 2011

У меня проблема с проверкой типа содержимого с помощью подключаемого модуля Paperclip:

image.rb (соответствующий фрагмент)

  has_attached_file :photo,
    :styles => {:xlarge => "640x512>", :large => "350x280>", :medium => "180x144^",
                :thumb => "100x80^", :original => "1280x1280>" },
    :convert_options => {:xlarge => "-strip", :large => "-strip",
                :medium => "-strip -gravity center -extent 180x144 +repage",
                :thumb => "-strip -gravity center -extent 100x80 +repage"},
    :default_style => :medium,
    :url => "/system/:attachment/:id/:basename_:id_:style.:extension"


  validates_attachment_presence :photo
  validates_attachment_content_type :photo, :content_type => ['image/jpeg', 'image/png', 'image/gif', 'image/pjpeg', 'image/x-png', 'image/jpeg2000'], :message => 'Uploaded file is not an image'

Я использую вложенные формы,модель изображения является дочерней моделью модели свойств.Во время проверки правильности моей формы я сталкиваюсь с некоторыми проблемами.Я проверяю проверки, загружая файл PDF, в котором модель принимает только изображения.

вывод в моем виде: <% = @ property.errors.inspect%>

#[#, @message="Uploaded file is not an image">], 
"images.photo"=>[#, @message="C:/Users/Michael/AppData/Local/Temp/stream,4272,1.pdf is not recognized by the 'identify' command.">]}>, @base=#>

вывод в виде ошибки (ов) проверки в поле ввода загрузки файла:

C:/Users/Michael/AppData/Local/Temp/stream,4272,1.pdf is not recognized by the 'identify' command.
C:/Users/Michael/AppData/Local/Temp/stream,4272,1.pdf is not recognized by the 'identify' command.
C:/Users/Michael/AppData/Local/Temp/stream,4272,1.pdf is not recognized by the 'identify' command.
C:/Users/Michael/AppData/Local/Temp/stream,4272,1.pdf is not recognized by the 'identify' command.
C:/Users/Michael/AppData/Local/Temp/stream,4272,1.pdf is not recognized by the 'identify' command.

2 выпусков:

выпуск 1

Поле ввода показывает 5 раз ту же ошибку, потому что в модели установлено 5 стилей.Вопрос в том, почему скрепка пытается идентифицировать (и, вероятно, преобразовать pdf), когда вы ожидаете, что проверка будет запущена первой и уже выдаст ошибку, прежде чем пытаться идентифицировать и преобразовать?Преобразует ли Paperclip все стили перед запуском проверок?Если да, есть ли способ изменить порядок обработки, сначала проверку, а затем обработку стилей?

выпуск 2

Как отобразить сообщение об ошибкевалидация («Загруженный файл не является изображением») рядом с полем ввода загрузки файла вместо отображаемых сейчас ошибок (5 x выходных данных команды идентификации), последнее бесполезно для пользователя веб-сайта.

Спасибо!

1 Ответ

1 голос
/ 11 мая 2011

Я использовал

has_attached_file: photo,: whiny => false

, и это, похоже, помогло сообщениям об ошибках.Для сообщений об ошибках я использовал

OBJECT.errors [: photo_content_type] OBJECT.errors [: photo_file_size]

...