通过在rails中循环遍历2d数组来创建html表

时间:2015-12-24 03:06:25

标签: ruby-on-rails arrays loops ruby-on-rails-4 html-table

我正在尝试获取这些数组:

table_header  = ["val1", "val2", "val2"]
name_column   = ["name1", "name2", "name3"]
val1_column   = ["12", "12", "12"]
val2_column   = ["123", "123", "123"]
val3_column   = ["1234", "1234", "1234"]

进入这样的表

| Name   |  val1  |  val2 | val3 |
----------------------------------
| name1  |  12    |  123  | 1234 |
----------------------------------
| name2  |  12    |  123  | 1234 |
----------------------------------
| name3  |  12    |  123  | 1234 |
----------------------------------

这就是我所拥有的表格标题和名称列

<table id="example" class="display">
  <thead>
    <tr>
      <th>Name</th>

    <%  table_header.each do |header| %>
      <th> <%= header %> </th>
    <%  end %>

    </tr>
  </thead>
  <tbody>
       <%  name_column.each do |name| %>
        <tr>
         <td> <%= name  %> </td>
        </tr>
        <% end %>

 </tbody>
</table>

我现在的问题是我无法将值列循环到表中。我尝试了一些东西,但没有一个在起作用。

我可以将所有行放在如下所示的数组中,但可能有数百行加上name_column值无法添加到下面的数组中,因此最好将它们存储在列数组中。

first_row_vals  = ["12", "123", "1234"] 
second_row_vals = ["12", "123", "1234"] 
third_row_vals  = ["12", "123", "1234"]

如果您认为使用上面的行阵列会更容易,我很乐意为它做好准备。

我确信有一些简单的方法可以做到这一点,但它不会出现在我脑海中。

1 个答案:

答案 0 :(得分:1)

如果你打算使用row_vals结构,我建议这样:

<tbody>
  <% [first_row_vals, second_row_vals, third_row_vals].each_with_index do |row, index| %>
    <tr>
      <td> <%= name_column[index] %> </td>
      <% row.each do |value| %>
        <td> <%= value %> </td>
      <% end %>
    </tr>
  <% end %>
</tbody>

对于较大的行集,您可以使用我在问题评论中提出的二维数组。

rows_vals = []
rows_vals << ["1", "2", "3", "..."] 
rows_vals << ["4", "5", "6", "..."] 
# ...
# row_vals = [["1", "2", "3", "..."], ["4", "5", "6", "..."], ...]

然后工作应该更容易

<tbody>
  <% rows_vals.each_with_index do |row, index| %>
    <tr>
      <td> <%= name_column[index] %> </td>
      <% row.each do |value| %>
        <td> <%= value %> </td>
      <% end %>
    </tr>
  <% end %>
</tbody>