我是一种新的ruby,我试图用HTML格式打印使用Nokogiri HTML builder的数组内容。如何打印数组的HTML格式内容Nokogiri builder
请有人指点我方向。
在此先感谢。
我到目前为止的代码是:
#!/usr/bin/env ruby
require 'rubygems'
require 'nokogiri'
a = ["Header1","Header2","Header3"]
b = [["x","y","z"],["w","q","t"]]
builder = Nokogiri::HTML::Builder.new do |doc|
doc.html {
doc.body{
doc.table {
doc.tr {
doc.td {
a.each { |v| p v }
b.each {|x| p v}
}
}
}
}
}
end
puts builder.to_html
我在寻找的输出是:
<html>
<body>
<table>
<tr>
<td>Header1</td>
<td>Header2</td>
<td>Header3</td>
</tr>
<tr>
<td>x</td>
<td>y</td>
<td>z</td>
</tr>
<tr>
<td>w</td>
<td>q</td>
<td>t</td>
</tr>
</table>
</body>
</html>
我得到几个错误:
C:\AWK\XMLs>ruby Nokogiri_HTMLBuilder.rb
"Header1"
"Header2"
"Header3"
Nokogiri_HTMLBuilder.rb:17:in `block (7 levels) in <main>': undefined local variable or method `v' for main:Object (NameError)
from Nokogiri_HTMLBuilder.rb:17:in `each'
from Nokogiri_HTMLBuilder.rb:17:in `block (6 levels) in <main>'
from C:/Ruby200/lib/ruby/gems/2.0.0/gems/nokogiri-1.6.2.rc2-x86-mingw32/lib/nokogiri/xml/builder.rb:391:in `call'
from C:/Ruby200/lib/ruby/gems/2.0.0/gems/nokogiri-1.6.2.rc2-x86-mingw32/lib/nokogiri/xml/builder.rb:391:in `insert'
from C:/Ruby200/lib/ruby/gems/2.0.0/gems/nokogiri-1.6.2.rc2-x86-mingw32/lib/nokogiri/xml/builder.rb:375:in `method_missing'
更新后的数据:
###################################################################
谢谢你antpaw的帮助。我的建议会更好。这就像你说的!
我现在只有以期望的方式打印输出的问题。
我到目前为止这样的代码: #在/ usr/bin中/ env的红宝石 需要 'RubyGems的' 要求 '引入nokogiri'
a = ["Header1","Header2","Header3"]
b = [["x","y","z"],["w","q","t"]]
builder = Nokogiri::HTML::Builder.new do |doc|
doc.html {
doc.body{
doc.table {
doc.tr {
a.each { |v| doc.td { doc.text(v) } }
}
doc.tr {
b.each { |v| v.each { |z| doc.td { doc.text(z) } } }
}
}
}
}
end
puts builder.to_html
我得到这个输出(第2和第3行是!在一个单一的一个合并,应该分开):
<html>
<body>
<table>
<tr>
<td>Header1</td>
<td>Header2</td>
<td>Header3</td>
</tr>
<tr>
<td>x</td>
<td>y</td>
<td>z</td>
<td>w</td>
<td>q</td>
<td>t</td>
</tr>
</table>
</body>
</html>
和我在寻找的输出是:
<html>
<body>
<table>
<tr>
<td>Header1</td>
<td>Header2</td>
<td>Header3</td>
</tr>
<tr>
<td>x</td>
<td>y</td>
<td>z</td>
</tr>
<tr>
<td>w</td>
<td>q</td>
<td>t</td>
</tr>
</table>
</body>
</html>
感谢您的帮助迄今
月2日更新:
#------------------------------------------------------------------#
您好再次,
我能得到所需的输出。我只想在标题前添加一些空的td,并且在td中包含colspan和类 ,但我无法正确添加colspan和类。请你帮我解决这个问题。
这是我到目前为止的代码,它的工作除了注释行'。
对于注释行我要得到这个输出:
<td colspan="3" class="MyClass">Some text</td>
代码我到目前为止有:再次
builder = Nokogiri::HTML::Builder.new do |doc|
doc.html {
doc.body{
doc.table {
doc.tr {
doc.td {}
doc.td {}
#doc.td {colspan "3"; doc.text("Org")} #Here I want to add a colspan and class
a.each { |v| doc.td { doc.text(v) } }
}
b.size.times do |j|
doc.tr {
b.inject(0) {|m,l| [m, l.size].max}.times do |i|
doc.td {
doc.text("#{b[j][i]}")
}
end
}
end
}
}
}
end
puts builder.to_html
感谢您的帮助。
您好antpaw,谢谢。它正在处理您的建议,只有一些问题才能正确打印输出。请在“更新:”下方再次看到我的问题,我已更新它。谢谢 – Zurix
你好,再次,也许你可以再次帮助我。请参阅我的问题,请在第二次更新下面。 Regards – Zurix
你好,对于任何可能有同样问题的人,我找到了我最后一个问题的方法。我已经这样做了。 #doc.td(:colspan =>“3”,:class =>“MyClass”){doc.text(“Some text”)}#。感谢所有的帮助:) – Zurix