前提条件
・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つを導入する必要がある。Gemfile
gem 'rqrcode'
gem 'chunky_png'
ターミナル
bundle
これで前準備は完了。
次にコードを書いていく。
QRコードを生成させる
今回は個人的な理由だが、各ユーザーのマイページに設置したいため、user_helper.rbにコードを記述する。app/helpers/users_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 に記述していく。users/show.html.erb
<%= image_tag qrcode_tag url %>
とは言っても表示させたい場所に上記のコードを記述するだけで完了。
urlの部分に、生成されるQRコードを読み取ったときに遷移させるページのURLを記述すれば、読み込んだときにそのページに遷移するQRコードが生成される。以上。