在irb
data =“2 1058 657682” 条形码= Barby :: QrCode.new(数据) File.open('barcode.png','w +') {| F | f.write barcode.to_png(:height => 100,:margin => 25,:xdim => 100)}
生成错误:
ActionView::TemplateError (/Library/Ruby/Gems/1.8/gems/barby- 0.4.0/vendor/rqrcode/lib/rqrcode/qrcode/qr_code.rb:296:in `map_data': You have a nil object when you didn't expect it!
The error occurred while evaluating nil.rszf) on line <a href="/toretore/barby/issues/#issue/1" class="internal">#1</a> of app/views/profile/ticket.rpdf:
1: pdf.font_families["Helvetica"] =
2: {
3: "b" => "Helvetica-Bold",
4: "i" => "Helvetica-Oblique"
lib/pdf_render.rb:46:in `pdf'
barby (0.4.0) vendor/rqrcode/lib/rqrcode/qrcode/qr_code.rb:291:in `each'
barby (0.4.0) vendor/rqrcode/lib/rqrcode/qrcode/qr_code.rb:291:in `map_data'
barby (0.4.0) vendor/rqrcode/lib/rqrcode/qrcode/qr_code.rb:287:in `step'
barby (0.4.0) vendor/rqrcode/lib/rqrcode/qrcode/qr_code.rb:287:in `map_data'
barby (0.4.0) vendor/rqrcode/lib/rqrcode/qrcode/qr_code.rb:172:in `make_impl'
barby (0.4.0) vendor/rqrcode/lib/rqrcode/qrcode/qr_code.rb:196:in `get_best_mask_pattern'
barby (0.4.0) vendor/rqrcode/lib/rqrcode/qrcode/qr_code.rb:195:in `each'
barby (0.4.0) vendor/rqrcode/lib/rqrcode/qrcode/qr_code.rb:195:in `get_best_mask_pattern'
barby (0.4.0) vendor/rqrcode/lib/rqrcode/qrcode/qr_code.rb:145:in `make'
barby (0.4.0) vendor/rqrcode/lib/rqrcode/qrcode/qr_code.rb:85:in `initialize'
barby (0.4.0) lib/barby/barcode/qr_code.rb:94:in `new'
barby (0.4.0) lib/barby/barcode/qr_code.rb:94:in `rqrcode'
barby (0.4.0) lib/barby/barcode/qr_code.rb:55:in `encoding'
barby (0.4.0) lib/barby/outputter.rb:86:in `encoding'
barby (0.4.0) lib/barby/outputter/png_outputter.rb:67:in `height'
barby (0.4.0) lib/barby/outputter.rb:116:in `send'
barby (0.4.0) lib/barby/outputter.rb:116:in `with_options'
barby (0.4.0) lib/barby/outputter.rb:114:in `each'
barby (0.4.0) lib/barby/outputter.rb:114:in `inject'
barby (0.4.0) lib/barby/outputter.rb:114:in `with_options'
barby (0.4.0) lib/barby/outputter/png_outputter.rb:18:in `to_canvas'
barby (0.4.0) lib/barby/outputter/png_outputter.rb:58:in `to_png'
barby (0.4.0) lib/barby/barcode.rb:70:in `send'
barby (0.4.0) lib/barby/barcode.rb:70:in `method_missing'
(eval):107:in `pdf'
(eval):88:in `each'
(eval):88:in `pdf'
lib/pdf_render.rb:18:in `eval'
lib/pdf_render.rb:46:in `pdf'
lib/pdf_render.rb:18:in `render'
...
然而,如果我将数据更改为“2 1058 657681”(将最终的'2'替换为'1'),它可以正常工作。
宝石:
巴比0.4.0 png 1.1.0(1.2.0继续获取String :: CompilationError)答案 0 :(得分:2)
在barby-&lt; version&gt; /vendor/rqrcode/lib/rqrcode/qrcode/qr_code.rb的第295行,更改
if byte_index < data.size
到
if byte_index < data.size && ! data[byte_index].nil?
玩得开心!
答案 1 :(得分:0)
尝试使用Barby 0.4.2并且也失败了。问题出在RQRCode库中,它仍然是0.3.2版本。
您可以尝试传递一个:size参数来覆盖以dinamically计算的那个,但最终会在另一个字符串上失败。
我发现绕过问题的唯一方法是尝试在一个级别,如果失败则尝试另一个级别。
begin
student_barcode = Barby::QrCode.new(content, :level => :q)
rescue NoMethodError
student_barcode = Barby::QrCode.new(content, :level => :m)
end
在一个级别中生成的错误在另一个级别中没有发生..很奇怪但是有效。
答案 2 :(得分:0)
干杯!看起来像rqrcode,反过来Barby已更新以修复此错误。 toretore/barby