after_photo_post_process:post_process_photo
def post_process_photo
img = EXIFR::JPEG.new(photo.queued_for_write[:original].path) # error on this line
return unless img
self.width = img.width
self.height = img.height
self.model = img.model
end
我使用名为EXIFR的ruby gem从JPEG文件中提取EXIF数据。 EXIF数据只是关于图片的技术数据。因此,当我上传JPEG时,我的代码工作正常,但是任何其他图像类型都会导致它中断。
EXIFR :: ImagesController中的MalformedJPEG #create
找不到图像标记的开始
我假设如果没有为img变量赋值,那么return语句将允许它工作,但看起来情况并非如此。
答案 0 :(得分:1)
您可以挽救错误并返回其他内容。
def post_process_photo
begin
img = EXIFR::JPEG.new(photo.queued_for_write[:original].path) # error on this line
self.width = img.width
self.height = img.height
self.model = img.model
rescue EXIFR::MalformedJPEG
return nil
end
end