将生成的图像文件另存为回形针附件

时间:2012-08-16 17:50:07

标签: ruby-on-rails-3 paperclip minimagick

我有一种使用rqrcode-rails3 gem生成某些字符串的QR代码的方法:

def generate_qrcode(string, options={})
  format = options[:format] || :png
  size   = options[:size]   || RQRCode.minimum_qr_size_from_string(string)
  level  = options[:level]  || :h

  qrcode = RQRCode::QRCode.new(string, size: size, level: level)
  svg    = RQRCode::Renderers::SVG::render(qrcode, options)

  image = MiniMagick::Image.read(svg) { |i| i.format "svg" }
  image.format "png" if format == :png
  image
end

新生成的图像将附加到模型对象并使用paperclip存储在数据库中:

has_attached_file :qrcode_png
has_attached_file :qrcode_svg

当我尝试附加图片时:

label.qrcode_png = generate_qrcode(label.id.to_s)
label.save!

并获得异常 Paperclip :: AdapterRegistry :: NoHandlerError

  

未找到MiniMagick :: Image:0x007fa629e71388的处理程序   @path = “/变种/文件夹/ FS / yf7s27kj27n3lmdywp4tgcm80000gn / T / mini_magick20120816-2170-1w6vbz.png”,   @临时文件=#

我的代码有什么问题?

1 个答案:

答案 0 :(得分:1)

好的,我明白了。我必须返回一个文件对象而不是MiniMagick::Image

File.open(image.path)

然后paperclip可以从文件系统中查找并读取文件并保存。