2012-11-27 43 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