Réponse de Matchu r m'a beaucoup inspiré et je l'ai modifié pour des méthodes auto-définies au lieu de changer la classe intégrée (ne faites pas cela à moins d'avoir une bonne raison).
En plus de générer une table, la structure de Array peut être beaucoup plus pratique et intuitive pour accéder aux éléments.
Soit toute la table stockée dans une matrice 2-D, dites
@table_array = [
["Name","Gender","Age"],
["Andy","M","20"],
["Mary","F","19"],
["Tony","M","18"]
]
dans lequel chaque premier élément sert de l'en-tête de table et le reste est contenu de la table. Maintenant, nous pouvons utiliser le bien formaté table_array et un attribut de classe de table pour générer une table code html:
def ToCell (tag,value)
value.map{ |c| "<#{tag}>#{c}</#{tag}>" }.join
end
def ToTable (table_array, table_class)
headers = "<tr>" + ToCell('th',table_array[0]) + "</tr>"
cells = table_array[1..table_array.count].map{ |each_row|
"<tr>#{ToCell('td',each_row)}</tr>"
}.join
table = "<table class=\"#{table_class}\"><thead>#{headers}</thead><tbody>#{cells}</tbody></table>"
end
et l'intégrer dans.fichier erb
<%= ToTable(@table_array,"table").html_safe %>
la sortie serait quelque chose comme ça si u voir à partir du navigateur
<table class="table">
<thead>
<tr><th>Name</th><th>Gender</th><th>Age</th></tr>
</thead>
<tbody>
<tr><td>Andy</td><td>M</td><td>20</td></tr>
<tr><td>Mary</td><td>F</td><td>19</td></tr>
<tr><td>Tony</td><td>M</td><td>18</td></tr>
</tbody>
</table>
Je viens de remarquer que, puisque j'ai fini par changer le script, la sortie n'est certainement pas celle-là. Modifier en seulement une seconde. – Matchu
Édité. Beaucoup mieux. – Matchu