如何垂直填充数据表?

时间:2012-05-31 23:50:09

标签: html ruby-on-rails ruby arrays haml

我有三个数组,我想在HTML表格中垂直排列。每个数组的数据都将从上到下填入列中。

例如,我有三个数组:

fruit = ['pear', 'apple', 'orange']
veges = ['corn', 'radish', 'lettuce']
meat = ['beef', 'chicken', 'pork']

我希望桌子看起来像这样:

<table>
  <tr>
    <td>
      pear
    </td>
  </tr>
  <tr>
    <td>
      corn
    </td>
  </tr>
  <tr>
    <td>
      beef
    </td>
  </tr>

  <tr>
    <td>
      apple
    </td>
  </tr>
  <tr>
    <td>
      radish
    </td>
  </tr>
  <tr>
    <td>
      chicken
    </td>
  </tr>

  <tr>
    <td>
      orange
    </td>
  </tr>
  <tr>
    <td>
      lettuce
    </td>
  </tr>
  <tr>
    <td>
      pork
    </td>
  </tr>
</table>

2 个答案:

答案 0 :(得分:4)

我可能会使用Array#transpose来重新排列内容以匹配<table>的内容:

rows = [ fruit, veges, meat ].transpose

现在rows将如下所示:

[
  ["pear", "corn", "beef"],
  ["apple", "radish", "chicken"],
  ["orange", "lettuce", "pork"]
]

生成表格只需迭代rows

%table
  - rows.each do |row|
    %tr
      - row.each do |food|
        %td= food

答案 1 :(得分:1)

查看此网站:Generate vertically-ordered HTML table in Ruby

以下是相关代码(此示例中的实例变量仅用于识别控制列数和行数的内容):

<table>
  <tbody>
    <% 0.upto(@rows_per_column-1).each do |row| %>
      <tr>
        <% 0.upto(@columns-1).each do |column| %>
        <% index = row + (column * @rows_per_column) %>
        <td><%= index %></td>
        <% end %>
      </tr>
    <% end %>
  </tbody>
</table>