2010-11-13 127 views
2

after_photo_post_process:post_process_photoreturn語句

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紅寶石的寶石,提取從JPEG文件的EXIF數據。 EXIF數據只是關於圖片的技術數據。因此,當我上傳JPEG時,我的代碼工作正常,但是任何其他圖像類型都會導致它中斷。

:: EXIFR在MalformedJPEG#ImagesController創建

沒有圖像標記開始發現

我假定return語句將使如果沒有被分配到IMG變量這項工作,但是這看起來像情況並非如此。

回答

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 
+0

太棒了,這很好用。 – chief 2010-11-13 22:08:24

+0

我很高興它爲你工作。 – rwilliams 2010-11-13 22:13:27