【问题标题】:Ruby array to HTML tableRuby 数组到 HTML 表
【发布时间】:2012-03-17 18:13:24
【问题描述】:

我正在尝试找出一种方法来获取一个 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 可能类似于标题/标题,然后子元素将是该表的新行。简而言之,我希望能够控制每个元素在表格中的放置位置。

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

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

【问题讨论】:

  • 也许给定数组的结果表布局示例,以便我们更好地了解您想要的最终结果?另外,你在使用 Rails 吗?
  • @Sergio,除了创建数组之外,我没有做太多其他事情。我实际上是边走边学,并试图找出一种方法来实现我想要的结果。如果您查看我的其他一些问题,您会注意到我一直在尝试不同的事情,但到目前为止还不是很好。 :) @ Andrew,不,我没有使用 Rails ......老实说,我什至不确定那是什么。我将上传我正在尝试做的截图......谢谢你们。 :)
  • @FrankN:很公平。也许,您可以改进您的问题,使其符合to these guidelines
  • @Sergio,感谢您的链接,我意识到我的问题不是很清楚。有时试图用语言表达我想要的东西是困难的,因为我不知道行话和所有那些好东西。 :) 我会尝试改进它...
  • 您可能正在寻找 enum.each_slice 以这种方式拆分数组stackoverflow.com/questions/3477775/…

标签: html ruby arrays


【解决方案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>"
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

【讨论】:

  • 感谢 Tass 和 Boris 的回复,抱歉,今晚之前我没有时间试一试。但是当我运行代码时,我得到... 错误:#>。知道为什么吗?
  • 我将塔斯的答案设置为已接受只是因为它是鲍里斯的一个干净的版本......但平心而论,鲍里斯的作品也是......所以谢谢你们俩。 :)
【解决方案2】:

这是我的代码,试图实现你想要的:

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

它不是最漂亮的 ruby​​,但至少可以生成如下所示的表格:

请注意,这是一个包含输出表的 html 图像屏幕截图。从现在开始,您只需对它们进行一些样式设置。

【讨论】:

  • 哦,考古学家。好久没看到for ... in了。
  • 很好:)。不过,如果您允许我引用自己的话:“它不是最美丽的红宝石”。我也有一段时间没有看到 ruby​​,但只要没有其他人愿意回答......我不介意你将我的代码翻译成现代 ruby​​
猜你喜欢
  • 2013-04-19
  • 2011-02-09
  • 1970-01-01
  • 2017-10-02
  • 2013-08-02
  • 1970-01-01
  • 1970-01-01
  • 2016-01-13
  • 2016-04-12
相关资源
最近更新 更多