実現したいこと
Railsでファイル保存をせずにQRコードを表示させたいです。
rqrcode_pngを使って実装しようとしていたところ、以下のエラーメッセージが発生しました。
###環境
ruby '2.5.3'
rails '5.2.2'
###参考にしたページ
https://qiita.com/koteko/items/d6d033997c544c47b718
発生している問題・エラーメッセージ
png= qr.to_imgの行に対して
undefined method `dark?' for #<RQRCode::QRCode:0x00007fd15e5f1608>
該当のソースコード
ruby
1class ReviewsController < ApplicationController 2 require 'rqrcode' 3 require 'rqrcode_png' 4 require 'chunky_png' 5 before_action :authenticate_user, {only: [:index, :show, :destroy, :share]} 6 7=省略= 8 9def share 10 @concert = Concert.find(params[:concert_id]) 11 qr = RQRCode::QRCode.new(new_concert_review_path(@concert), :size => 4, :level => :h ) 12 png= qr.to_img 13 @qr_base64 = png.resize(200, 200).to_data_url 14end 15 16=省略= 17 18end
試したこと
gemfileに以下の3つがきちんと追加されているのは確認しました。
'rqrcode'
'rqrcode_png'
'chunky_png'
rqrcodeの配布元(https://github.com/DCarper/rqrcode_png)を見ていて、
rqrcode_png /lib /rqrcode_png /sequence.rb にエラーに出ていた**.dark?**のメソッドがあるなぁというのは見つけました。
module RQRCodePNG
class Sequence
def initialize(qr_code)
@qr_code = qr_code
end# This method yields the vertices of the dark squares def dark_squares_only(&block) @qr_code.modules.each_index do |row| @qr_code.modules.each_index do |column| if @qr_code.dark?(row, column) yield row, column end end end end # returns the image size by looking at how long the first line of the code is def img_size @img_size ||= @qr_code.to_s.split("\n").first.size() end # Returns the border, 1/10 of the img size def border_width() @border ||= img_size() / 10 end
end
end
QRコードにしたい情報の部分に問題があるのかと思い、簡単な文字列に置き換えてみたりもしましたが、同じエラーが出ます。.to_imgの部分に何かあるのだと思っていますが、他に渡すパラメータは変わったことはしてないので、何が原因かわかりません…。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/11 06:01