Matchu's answe Me inspiré mucho y lo modifiqué a métodos autodefinidos en lugar de cambiar la clase incorporada (no hagas esto a menos que tengas una buena razón).
Además de generar una tabla, la estructura de Array puede ser mucho más cómoda e intuitiva para acceder a los elementos.
Vamos a toda la tabla almacenada en una matriz 2-D, dicen
@table_array = [
["Name","Gender","Age"],
["Andy","M","20"],
["Mary","F","19"],
["Tony","M","18"]
]
en el que cada primer elemento sirve como el encabezado de la tabla y el resto es contenido de la tabla. Ahora podemos usar el tabla_matriz bien formada y un atributo de clase tabla para generar un código de tabla 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
e incrustarlo en.erb archivo
<%= ToTable(@table_array,"table").html_safe %>
la salida sería algo como esto si u ver desde el navegador
<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>
Me di cuenta de que, como terminé cambiando el script, la salida definitivamente no es esa. Edita en solo un segundo. – Matchu
Editado. Mucho mejor. – Matchu