ruby on rails qr代码实现

时间:2013-11-30 19:29:35

标签: ruby-on-rails ruby-on-rails-4 qr-code

您只是尝试使用sam vincents qr代码生成器https://github.com/samvincent/rqrcode-rails3在我的rails网站中创建qr代码.......首先我将此代码添加到控制器

  

class QrcodeController< ApplicationController中

     

def qrcode      respond_to do | format |
       format.html
     format.svg {render:qrcode => @qrurl,:level => :l,:unit => 10,:color =>黑色}       format.png {render:qrcode => @qrurl}        format.gif {render:qrcode => @qrurl}         format.jpeg {render:qrcode => @qrurl}          结束           端

   def options 
     {:qrcode => "http://helloworld.com", size => 4} 
      end 
     

然后我不确定在视图中添加什么我试过这个

<div class="Qrcode qr">
<h2>Qr code</h2>

<p><%= link_to "SVG",  Qrcode_path("svg")  %></p>
<p><%= link_to "PNG",  Qrcode_path("png")  %></p>
<p><%= link_to "JPEG", Qrcode_path("jpeg") %></p>
<p><%= link_to "GIF",  Qrcode_path("gif")  %></p>

非常感谢有关它如何运作的任何帮助,因为它们并不是很多在线说明 即时通讯使用ruby 1.9.3和rails 4.0.1

1 个答案:

答案 0 :(得分:7)

我正在使用rqrcode gem。它非常简单,您不需要为qrcodes生成图像。代码是使用表格和一些CSS样式生成的......

您可以使用此帮助程序: /helpers/qrcode_helper.rb

module QrcodeHelper
  require 'rqrcode'

  def render_qr_code text, size = 3
    return if text.to_s.empty?
    qr = RQRCode::QRCode.new(text)
    sizeStyle = "width: #{size}px; height: #{size}px;"

    content_tag :table, class: "qrcode pull-right" do
      qr.modules.each_index do |x|
        concat(content_tag(:tr) do
          qr.modules.each_index do |y|
            color = qr.dark?(x, y) ? 'black' : 'white'
            concat content_tag(:td, nil, class: color, style: sizeStyle)
          end
        end)
      end
    end
  end
end

进入您的视图 some_view.html.erb

<%= render_qr_code("MYCODE") %>

您需要为代码添加样式 qrcode.css.less

table.qrcode {
  border-width: 0;
  border-style: none;
  border-color: #0000ff;
  border-collapse: collapse;
  margin-top: 100px;
  margin-bottom: 12px;

  td {
    border-width: 0;
    border-style: none;
    border-color: #0000ff;
    border-collapse: collapse;
    padding: 0;
    margin: 0;
    width: 3px;
    height: 3px;

    &.black {
      background-color: #000 !important
    }

    &.white {
      background-color: #fff !important
    }
  }
}

我的例子是使用Rails 3。