2

rqrcode-rails3gemを使用して文字列の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 = "/ var / folder / fs / yf7s27kj27n3lmdywp4tgcm80000gn / T / mini_magick20120816-2170-1w6vbz.png"、@ tempfile =#のハンドラーが見つかりません

私のコードの何が問題になっていますか?

4

1 に答える 1

1

はい、分かりました。代わりにファイルオブジェクトを返す必要がありますMiniMagick::Image

File.open(image.path)

次にpaperclip、ファイルシステムからファイルを見つけて読み取り、保存します。

于 2012-08-16T19:09:50.283 に答える