Ruby 关于 rails 发送功能错误?

Ruby on rails send function bug?

发生了什么事很奇怪,我正在循环更改 html 并且需要更改名为 product01 的变量,代码:

(10..34).each do |i|      
      li = @doc.css('li')[i-1]
      li.content = @site.send("product0#{i-9}")
end

在上面的代码中,错误是:undefined method `product010' for...

然后我刚刚删除了 0:

(10..34).each do |i|      
      li = @doc.css('li')[i-1]
      li.content = @site.send("product#{i-9}")      
end

现在的错误是:未定义方法“product1”用于...

我已经试过了

@site.send("product"+"0"+"#{i-9}") > product010

@site.send("product0".to_s+"#{i-9}") > product010

@site.send("product"+"0#{i-9}" > product010

所以,我只想要 product01。

为了让事情更清楚,我使用 nokogiri 打开一个 html 并通过数据库更改值,进入数据库的变量称为 product01、product02 等

我可以说@site.product01,但是有很多产品,所以我想一个接一个地循环。

它不是一组产品,每个产品都来自一个@site。

是的,它在 |i| 时有效高于 10 但不是从 0 到 9 因为我需要把 0.

@doc = Nokogiri::HTML(open("/home/file.html")

为了让它工作,我将删除所有名为 01,02..09 的变量,如果它不起作用,则将它们的名称更改为 1,2,..9。

谢谢。

我不确定您为什么要从 product01 到 product34,这看起来不对。

是否可以将其构造为 'products' 数组?这样就标准多了。

但是,您可以将数字格式化为给定的位数...

irb> '%02d' % 6
=> "06"

这似乎可以解决问题。

(取自How to make single digit number a two digit number in ruby?