前提条件
・ruby 2.6.6
・rails 6.0.3.4
・macOS Catalina バージョン10.15.7
概要
webアプリ内で一般的な会員システムに搭載されているmyQRコードを作成したいと思い、実装したので忘れないようここに残すことにした。
難しいことは特になく、比較的簡単に実装が完了した。
gemの導入
webアプリ内にQRコードを生成させるためには
・gem 'rqrcode'
・gem 'chunky_png'
の2つを導入する必要がある。
gem 'rqrcode'
gem 'chunky_png'
bundle
これで前準備は完了。
次にコードを書いていく。
QRコードを生成させる
今回は個人的な理由だが、各ユーザーのマイページに設置したいため、user_helper.rbにコードを記述する。
module UsersHelper
#ここから
require 'chunky_png'
def qrcode_tag(url, _options = {})
qr = ::RQRCode::QRCode.new(url)
ChunkyPNG::Image.from_datastream(qr.as_png.resize(250, 250).to_datastream).to_data_url
end
#ここまで
end
引数でurlを渡すことで、pngを生成する。
また注意して欲しいのが、gemを導入しているときはターミナルでwebアプリを再起動してからじゃないと、エラーが起きてうまく作動しないので注意。(自分も忘れていて何でエラーが起きているかわからなかった。)
Viewに表示させる
QRコード生成の準備ができたので、ViewでQRコードを表示させるコードを書いていく。自分の場合は何度もいうがマイページに設置したいので users/show.html.erb に記述していく。
<%= image_tag qrcode_tag url %>
とは言っても表示させたい場所に上記のコードを記述するだけで完了。
urlの部分に、生成されるQRコードを読み取ったときに遷移させるページのURLを記述すれば、読み込んだときにそのページに遷移するQRコードが生成される。以上。
参考文献
・QRコードの生成・埋め込み
https://qiita.com/koteko/items/d6d033997c544c47b718
・https://github.com/whomwah/rqrcode
・https://github.com/wvanbergen/chunky_png