我不能为我的生活看到为什么每次循环时我得到8个特定值(td [0])。我检查了我在网上看到的内容,但显然我错了。
假设'表'与某些Nokogiri html路径有关。我试图在tr中获取第一个td(位置0,所以td [0])的内容。
SELECT [N-1], SI_Initiative, LineCode, Timestamp
FROM TBL_VC_DATA t1
WHERE t1.Timestamp =
(SELECT Max(t2.Timestamp)
FROM TBL_VC_DATA t2
WHERE t2.timestamp<>t1.timestamp
AND t2.[N-1]=t1.[N-1]
AND t2.SI_Initiative=t1.SI_Initiative
AND t2.LineCode=t1.LineCode);
我只希望每个tr的位置[0]的数据一次。相反,我为每个tr获得了8份td [0]。我错过了一些我认为明显的东西,但是什么呢?
答案 0 :(得分:-1)
result = []
table.css('tr').each do |row|
result << row.css('td')[0].text if row.css('td')[0]
end
问题很简单,有些行可能根本没有td。这就是为什么你要在调用#text之前检查是否有任何td。
如果您更喜欢使用#map:
result = table.css('tr').map do |row| # map returns array of results
row.css('td')[0].text if row.css('td')[0]
end.compact # compact deletes all the nil elements from array