我正试图找出一种获取Ruby数组并创建HTML表的方法。该数组是动态的,其内容根据用户选项和输入而变化,因此HTML表也需要是动态的。
数组看起来像这样:
array = [[a, 1, 2 ,3], [a, 1, 2 ,3], [a, 1, 2 ,3], [b, 1, 2 ,3], [b, 1, 2 ,3], [b, 1, 2 ,3], [c, 1, 2 ,3]]
我想做的是先按以下方式分组或拆分数组(虽然这可能不是必需的,我不知道)。
array1 = [[a, 1, 2 ,3], [a, 1, 2 ,3], [a, 1, 2 ,3]]
array2 = [[b, 1, 2 ,3], [b, 1, 2 ,3], [b, 1, 2 ,3]]
array3 = [[c, 1, 2 ,3]]
然后在单独的HTML表格中输出每个新数组,其中a
,b
,c
可能类似于标题/标题,然后子元素将是新行到那张桌子。简而言之,我希望能够控制每个元素放在表格中的位置。
我知道我的描述可能不太清楚,但这超出了我非常有限的技能范围,甚至很难解释我想要实现的目标。 :)
编辑:这是我试图想象我想要完成的事情......
答案 0 :(得分:3)
或多或少无国籍: - )
a = [["a", 1, 2 ,3], ["a", 1, 2 ,3], ["a", 1, 2 ,3],
["b", 1, 2 ,3], ["b", 1, 2 ,3], ["b", 1, 2 ,3], ["c", 1, 2 ,3]]
grouped = a.group_by{|t| t[0]}.values
header = "<tr><td>Name</td> <td>Length</td> <td>Width</td> <td>Depth</td> </tr>"
table = grouped.map do |portion|
"<table>\n" << header << "\n<tr>" << portion.map do |column|
"<td>" << column.map do |element|
element.to_s
end.join("</td><td>") << "</td>"
end.join("</tr>\n<tr>") << "</tr>\n</table>\n"
end.join("\n")
puts table
答案 1 :(得分:1)
这是我的代码,试图达到你想要的目标:
a = [["a", 1, 2 ,3], ["a", 1, 2 ,3], ["a", 1, 2 ,3],
["b", 1, 2 ,3], ["b", 1, 2 ,3], ["b", 1, 2 ,3], ["c", 1, 2 ,3]]
grouped = a.group_by{|t| t[0]}.values
header = "<tr><td>Name</td> <td>Length</td> <td>Width</td> <td>Depth</td> </tr>"
for portion in grouped
str = "<table>\n" + header + "\n"
for line in portion
str += "<tr>"
for element in line
str += "<td>" + element.to_s + "</td>"
end
str += "</tr>\n"
end
str += "</table>\n"
puts str
end
它不是最美丽的红宝石,但至少会生成看起来像这样的表格:
请注意,这是一个html的图像屏幕截图,其中包含输出表。从现在开始,你只需要对它们进行一些设计。