Generieren Sie eine HTML-Tabelle aus einem Array von Hashes in Ruby

8

Was ist der beste Weg (idealerweise ein Juwel, aber wenn nötig, ein Code-Snippet), um aus einem Array von Hashes eine HTML-Tabelle zu generieren?

Zum Beispiel dieses Array von Hashes:

%Vor%

Sollte diese Tabelle erzeugen:

%Vor%     
Tom Lehman 13.04.2010, 23:59
quelle

6 Antworten

9

Verwenden Sie dazu den XMLBuilder:

%Vor%

Ausgabe

%Vor%     
Harish Shetty 14.04.2010, 06:53
quelle
10
%Vor%     
Tilo 11.10.2013 06:17
quelle
4

Das scheint nicht besonders schwierig von Hand zu sein. Je nachdem, wo Sie es verwenden werden, sollte dies wahrscheinlich irgendwo in einer eigenen Methode geschehen, aber hier ist das kleine Skript, das ich gerade geschrieben habe:

table.rb :

%Vor%

Ausgabe:

%Vor%

Offensichtlich gibt es einige Probleme - zum einen geht es davon aus, dass die Überschriften der Zeile eins mit allen anderen Überschriften übereinstimmen. Sie könnten dies jedoch recht einfach vorarbeiten und umgehen, indem Sie Nils in allen Zeilen für alle nicht richtig zugeordneten Überschriften ausfüllen.

Der Grund, warum es kein Juwel gibt, ist, dass das Generieren eines Tisches nicht wirklich ein großes Unterfangen ist. Es ist erstaunlich, was Sie tun können, wenn Sie sich anschnallen und tatsächlich selbst etwas programmieren:)

    
Matchu 14.04.2010 00:48
quelle
4

Sie können builder verwenden:

%Vor%     
Mladen Jablanović 14.04.2010 06:52
quelle
1

Die Antwort von Matchu hat mich sehr inspiriert und ich habe sie zu selbstdefinierten Methoden modifiziert, anstatt die eingebaute Klasse zu ändern (tue das nicht, außer du hast einen wirklich guten Grund).

Darüber hinaus kann die Array-Struktur beim Erstellen einer Tabelle wesentlich bequemer und intuitiver auf Elemente zugreifen.

Lassen Sie die gesamte Tabelle in einem 2D-Array speichern, sagen Sie

%Vor%

wobei jedes erste Element als Tabellenkopf dient und der Rest Tabelleninhalt ist. Jetzt können wir das gut formatierte table_array und ein Tabellenklassenattribut verwenden, um einen HTML-Code für die Tabelle zu generieren:

%Vor%

und betten Sie es in die .erb-Datei

ein %Vor%

Die Ausgabe wäre etwa so, wenn Sie vom Browser aus sehen

%Vor%     
Alston 15.08.2012 00:15
quelle
0

Das dom Juwel, das ich entwickelt habe, hat die Funktionalität dessen, was Sie tun möchten. Sie können eine Tabelle wie diese einfach innerhalb von Ruby-Code erstellen:

%Vor%     
sawa 05.05.2016 03:04
quelle

Tags und Links