Ruby数组到HTML表

时间:2012-03-17 18:13:24

标签: html ruby arrays

我正试图找出一种获取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表格中输出每个新数组,其中abc可能类似于标题/标题,然后子元素将是新行到那张桌子。简而言之,我希望能够控制每个元素放在表格中的位置。

我知道我的描述可能不太清楚,但这超出了我非常有限的技能范围,甚至很难解释我想要实现的目标。 :)

编辑:这是我试图想象我想要完成的事情...... html output result

2 个答案:

答案 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

它不是最美丽的红宝石,但至少会生成看起来像这样的表格: enter image description here

请注意,这是一个html的图像屏幕截图,其中包含输出表。从现在开始,你只需要对它们进行一些设计。