W ostatnim projekcie, który tworzyłem, spotkałem się z koniecznością generowania kodów QR. Okazało się to dużo łatwiejsze niż początkowo zakładałem. Rozwiązaniem mojego problemu okazała się biblioteka rqrcode dla Ruby. Jak jednak zintegrować ją z aplikacją w Roby on Rails i wyświetlić kod QR?
Zakładam, że mamy już działającą aplikację i brakuje w niej jedynie generowania kodów QR. Przystępujemy zatem do pracy, uzupełniamy plik Gemfile o:
gem 'rqrcode', '~> 1.1', '>= 1.1.2'
Następnie instalujemy brakujące biblioteki pojeceniem:
bundle install
W tej chwili mamy już wszystko czego potrzebujemy do generowania kodów QR w aplikacji.
Sam kod generujący kody QR w mojej aplikacji, wyniosłem do katalogu z bibliotekami. Utworzyłem zatem plik „libs/qrcode/qrcode.rb” o treści:
require 'rqrcode'
class Qrcode
def generate(message)
return RQRCode::QRCode.new(message).as_svg(
offset: 0,
color: '000',
shape_rendering: 'crispEdges',
module_size: 12,
standalone: true
)
end
end
Aby biblioteka do generowania kodów QR była dostępna w całej aplikacji, musimy jeszcze zadbać o załadowanie jej podczas startu, w tym celu, do pliku applications.rb dopisujemy kod:
config.eager_load_paths << "#{Rails.root}/lib/qrcode"
Aby wyświetlić kod QR w widoku, dodajemy w kontrolerze:
qrcode = Qrcode.new
@code = qrcode.generate("Treść")
A następnie, już w samym widoku:
<%= @code.html_safe %>
W efekcie – otrzymamy kod QR wyświetlony na stronie internetowej zbudowanej w oparciu o Ruby on Rails.