Массив Ruby в таблицу HTML - PullRequest
       0

Массив Ruby в таблицу HTML

1 голос
/ 17 марта 2012

Я пытаюсь найти способ взять массив 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 могут быть похожи на заголовок / заголовок, а затем подэлемент будет новой строкой в ​​этой таблице. Короче говоря, я хотел бы иметь возможность контролировать расположение каждого элемента в таблице.

Я знаю, что мое описание, вероятно, не слишком ясно, но это далеко за пределами моего очень ограниченного набора навыков и даже трудно объяснить, чего я хочу достичь. :)

edit: вот моя попытка визуализировать то, что я пытаюсь достичь ... html output result

Ответы [ 2 ]

3 голосов
/ 18 марта 2012

более или менее без гражданства: -)

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 голос
/ 17 марта 2012

Вот мой код, который пытается достичь того, что вы хотите:

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, в который я включил выходные таблицы. Отныне вам нужно будет лишь немного их стилизовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...