【发布时间】:2015-05-23 22:43:54
【问题描述】:
发生了很奇怪的事情,我做一个循环来改变一个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' for...
我已经试过了
@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 并通过 db 更改值,进入 db 的变量称为 product01、product02 等。
我可以说@site.product01,但是产品很多,所以我想一个一个地做一个循环。
它不是一系列产品,每个产品都来自一个@site。
是的,它在 |i| 时起作用高于 10 但不是从 0 到 9,因为我需要输入 0。
@doc = Nokogiri::HTML(open("/home/file.html")
为了让它工作我删除所有名为 01,02..09 的变量,如果它不起作用,将它们的名称更改为 1,2,..9。
谢谢。
【问题讨论】:
-
你能解释一下你想要做什么吗?例如什么是@doc,什么是@site,等等?为什么你不能直接说
@site.product01而不是随便发送? -
你说
@site.send("product#{i}")有效吗?我将在该循环内从 10 到 34,给你product10,product11....product34。不过,这感觉像是一个简单问题的可怕解决方案。我希望只有一个产品数组并遍历数组,而不是访问不同方法的负载。 -
为什么要循环播放 10..34?你为什么不只取数组或元素的长度呢?
-
刚刚更新了问题,谢谢大家。
标签: ruby-on-rails loops send