Rails3 - 使用回形针保存base64图像时出错?

时间:2011-02-20 03:06:39

标签: image ruby-on-rails-3 paperclip base64 attachment

这类似于发布here的问题,但该解决方案对我不起作用。也许是因为我没有正确传递数据。

我从Flash中截取屏幕截图并使用Jquery在页面上显示:

   $SNAPSHOT_PREVIEW.attr("src","data:image/jpg;base64," + imgData);
   $HIDDEN_BASE64_STRING.val(imgData);

我很好并且可以将图像保存到Flash中的Rails,但是出于安全原因,Flash不允许您在没有用户按下按钮的情况下调用后期操作。说得通。无论如何,现在我无法使用Paperclip保存来自HTML表单的图像:

#(photo has_attached_file:image)
@photo = params[:photo]
data = StringIO.new(Base64.decode64(params[:base64_string]))
data.class.class_eval { attr_accessor :original_filename, :content_type }
data.original_filename = "screenshots.jpg"
data.content_type = "image/jpg"
@photo.image = data

产生错误:

NoMethodError (undefined method `image=' for #<ActiveSupport::HashWithIndifferentAccess:0x8c2e420>):

如何将base64图像数据细化为回形针附件?

对于奖励积分,我是否需要隐藏字段来传递数据,或者是否有一种聪明的,与浏览器兼容的方式将图像src用作表单值?

1 个答案:

答案 0 :(得分:1)

你有代码:

@photo = params[:photo]

params只是一个哈希值,所以稍后,当你调用@photo.image时,Rails就会出错。也许你想要:

@photo = Photo.new(params[:photo])

代替?