在 EAN-13 下为 Barby gem 生成条形码

generating barcode for Barby gem under EAN-13

在尝试在 HTML 中呈现文章条形码集合并逐步查看数据(相对于页面上的其他对象)时,控制器

require 'barby/outputter/html_outputter'
require 'barby/barcode/ean_13'

并且视图调用

<%= this_barcode = article.barcodes.first.barcode %>
<%= this_barcode.class %>
<%# barcode = Barby::EAN13.new(this_barcode) %>
<%# outputter = Barby::HtmlOutputter.new(barcode) %>
<%# barcode.to_html.html_safe %>
     [returns as expected]
8001300303466 String

然而,当想要获取条形码并取消注释该元素时,它无法处理,因为 data not validbarcode = Barby::EAN13.new(this_barcode) (也出现在 barcode = Barby::EAN13.new(this_barcode.to_i)

注意 可能在花园小路上,因为 what the wiki suggests
有混淆 barcode = Barby::DataMatrix.new(number) 因为那样会产生错误
uninitialized constant Barby::DataMatrix

如何确保数据正确以正确呈现?

这是问题所在: 8001300303466 有 13 个字符。这是正确的条形码。

我假设可以提交正确的条形码。然而line 54 of the gem's ean_13.rb file 允许 12 个字符的数据元素 FORMAT = /^\d{12}$/ 并继续计算校验位。

因此,

<%= barcode = Barby::EAN13.new(this_barcode[0...-1]) %>

最终会正确处理数据。