2012-11-27 45 views
0

從回形針2升級到回形針3我的圖像上傳API剎車。此代碼用來工作:回形針拋出NoHandlerError與base64照片

def decode_cover_image_data(cover_image_data) 
    data = StringIO.new(Base64.decode64(cover_image_data)) 
    data.class.class_eval { attr_accessor :original_filename, :content_type } 
    data.original_filename = "cover.png" 
    data.content_type = "image/png" 

    self.photo = data 
end 

現在提出了一個NoHandleError例外:

「回形針:: AdapterRegistry :: NoHandlerError(無處理髮現 」/ 9J/4AAQD/4Q [.. ] wooooGf/9K =」

有沒有人遇到這樣的問題?

感謝

回答

1

我發現那裏的問題來自何處,這是相當愚蠢的......

在我的控制器更新方法,我有這樣的事情:

def update 
    ... 
    if p[:photo] 
     @user_ipad.decode_cover_image_data(p[:photo]) 
    end 

    unless @user_ipad.update_attributes(p) 
     render :json => {:errors => @user_ipad.errors} 
    end 
    end 

的問題是,我設置用戶照片2次:

  • 一旦@ user_ipad.decode_cover_image_data(對[:相片])
  • 一旦@ user_ipad.update_attributes(p)

使用update_attributes保存base64字符串(仍在參數中)時發生崩潰。其實什麼讓我感到吃驚的是,這一段代碼與回形針2.4.5 ...

升級後回形針3.3.1我用這個代替我的更新方法解決我的問題:

def update 
    ... 
    if p[:photo] 
     p[:photo] = @user_ipad.decode_cover_image_data(p[:photo]) 
    end 

    unless @user_ipad.update_attributes(p) 
     render :json => {:errors => @user_ipad.errors} 
    end 
    end