ruby-on-rails-3 - 将生成的图像文件保存为回形针附件

标签 ruby-on-rails-3 paperclip minimagick

我有一个使用 rqrcode-rails3 gem 为一些字符串生成二维码的方法:

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

No handler found for MiniMagick::Image:0x007fa629e71388 @path="/var/folders/fs/yf7s27kj27n3lmdywp4tgcm80000gn/T/mini_magick20120816-2170-1w6vbz.png", @tempfile=#

我的代码有什么问题?

最佳答案

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

File.open(image.path)

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

关于ruby-on-rails-3 - 将生成的图像文件保存为回形针附件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11992758/

相关文章:

ruby-on-rails - Rails 如何为heroku 上的rake 任务创建后台任务?

ruby-on-rails-3 - 如何从 Rails 通知访问 current_user?

minimagick - 检索给定像素颜色的十六进制代码

ruby-on-rails - 我如何确定模型与 Controller 中的内容?

ruby-on-rails - 未定义方法 `tripphoto_changed?' ... Carrierwave

ruby-on-rails - 如何将 image_tag 与远程 URL 一起使用?

ruby-on-rails - Rails + Dragonfly gem : Saving image in a directory structure based on ActiveRecord object attributes

ruby-on-rails - 在 ROR 应用程序中显示来自数据库的多个回形针图像。许多关系

ruby-on-rails-3 - 通过 Carrierwave、mini-magick 和 ImageMagick 识别图像深度和打印尺寸