【问题标题】:Creating a html table by looping through 2d arrays in rails通过循环遍历rails中的二维数组来创建一个html表
【发布时间】:2016-03-30 12:59:21
【问题描述】:

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

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"]

如果您认为使用上述行数组会更容易,我很乐意试一试。

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

【问题讨论】:

  • 这不完全是您所知道的二维数组,您可以将结构更改为table = [[value1, value2, value3], [value4, value5, value6], [value7, value8, value9]] 之类的东西吗?
  • 是的,如果它更容易,我可以将数组放入数组中

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


【解决方案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>

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

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>

【讨论】:

  • 谢谢。如果有一定数量的行或少量行但会有 50-150+ 行,则此方法有效,我可以将值数组放入一个数组中,就像您在评论中建议的那样。你能更新那个方法的答案吗?
  • 我猜数组可能不需要存储在变量中。 g.rows[0].data, g.rows[1].data, g.rows[2].data etc.. 是我用来将行数组存储在一个变量中的,所以将它们全部存储在一个数组中而不是将它们全部放入变量然后将所有变量放入一个数组中可能更容易?跨度>
  • 那你可以用二维数组,我已经相应地编辑了答案,玩得开心兄弟!
猜你喜欢
  • 1970-01-01
  • 2014-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-04
  • 2018-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多