Printing a Hash of Arrays as HTML table by releu

Look how to do it in 2 lines of code.

We have a hash:

@hash = {
  :foo => [1, 2],
  :bar => [3, 4],
  :baz => [5, 6]
}

We want to get this HTML:

<table>
  <tr>
    <th>foo</th>
    <th>bar</th>
    <th>baz</th>
  </tr>
  <tr>
    <td>1</td>
    <td>3</td>
    <td>5</td>
  </tr>
  <tr>
    <td>2</td>
    <td>4</td>
    <td>6</td>
  </tr>
</table>

Lets do it:

<table>
  <% @hash.keys.each do |key| %>
    <th>key</th>
  <% end %>
  <% @hash.values.max_by(&:size).size.times do |i| %>
    <tr>
    <% @group.values.map { |a| a[i] }.each do |value| %>
      <td><%= value %></td>
    <% end %>
    </tr>
  <% end %>
</table>

#html #erb #rails #ruby

Similar posts

Comments

No comments yet

releu