同一列中的两列数据。如何正确格式化此表?

时间:2014-06-06 17:19:46

标签: sql ruby-on-rails format html-table

我现在的输出是将一列叠加在另一列之上。如何获得第一列旁边的第二列,而不是它下面的第二列?

edit1:添加了HTML输出 edit2:好的,详细说明,do循环是在数据散列上运行的 {site1 => 1,site2 => 1,site3 => 4}它就是这样的。

我想输出:

sites :: data
site1 :: 3
site2 :: 2
site3 :: 5

<table>
<tr>
  <th>>7days</th>
  <th><7days</th>
</tr>

<tr>
  <% @ls7days.values.each do |ls7day| %>

  <td><%= ls7day %></td>
</tr>
  <%end%>

<tr>
  <% @gt7days.values.each do |gt7day| %>

  <td><%= gt7day %></td>
</tr>
  <%end%>      

</table>

HTML输出

<table>
<tr>
<th>>7days</th>
<th>>7days</th
</tr>

  <td>53</td>
</tr>

  <td>13</td>
</tr>

  <td>49</td>
</tr>

  <td>8</td>
</tr>

  <td>64</td>
</tr>    

</table>

4 个答案:

答案 0 :(得分:1)

好吧,好像你的原始代码中仍然存在一些格式错误,所以让我们从纠正错误开始。

<table>
  <tr>
    <th>&gt;7days</th>
    <th>&lt;7days</th>
  </tr>

  <% @ls7days.values.each do |ls7day| %>
    <tr>
      <td><%= ls7day %></td>
    </tr>
  <%end%>


  <% @gt7days.values.each do |gt7day| %>
    <tr>
      <td><%= gt7day %></td>
    </tr>
  <%end%>      

</table>

请注意,我替换了&gt;和&lt;在使用&gt;&lt;的情况下,以及在每个内容中移动开放的内容。

现在我们已经修复了格式化错误,我们对表的实际结构有一些问题。我认为这一步需要解释表的不同组件的用途。

  • 首先,您拥有<table></table>标签,这些标签非常漂亮 直接向前发出信号。

  • 接下来,您拥有<tr></tr>标记,这些标记代表了行的行 表。这些标记称为表格行标记。

  • 最后,您拥有<td></td>标签,这些标签代表了该网格的细胞 表。这些标签称为表数据标签,可能是 最困惑的一部分表。它们代表个人数据 单元格,以某种方式表示您的列。所有表行 表应具有相同数量的表数据。

  • 从技术上讲,还有一些其他标签,例如<th></th> 标签,但这些可以有效地被认为是<td><h3></h3></td>。 它们几乎与表格数据不同。

回顾表的结构,我们看到第一个表行中有两个表数据。然后每个表格行只有一个td。因此,您的表的行为是不稳定的,并且可能从一个浏览器到另一个浏览器的显示不同。为了解决这个问题,您只需要向每个表行添加另一个表数据。

我的猜测,鉴于您的意见,您实际上是在尝试使用每个语句来生成表的列。由于表的结构方式,这并不像看起来那么简单,但让我们试一试。

<table>
  <tr>
    <td><h4>&gt;7days</h4></td>
    <td><h4>&lt;7days</h4></td>
  </tr>


  <% if @ls7days.values.size > @gt7days.values.size %>
    <% @ls7days.values.each_with_index do |ls7day, index| %>
      <tr>
        <td><%= @gt7days.values[index] unless index >= @gt7days.size %></td>
        <td><%= ls7day %></td>
      </tr>
    <% end %>
  <% else %>
    <% @gt7days.values.each_with_index do |gt7day, index| %>
      <tr>
        <td><%= gt7day %></td>
        <td><%= @ls7days.values[index] unless index >= @ls7days.size %></td>
      </tr>
    <% end %>
  <% end %>

</table>

如您所见,我们现在迭代两个数组中较大的一个(gt7days和lt7days)。正如我们所做的那样,我们将其值放入新表格行中的表格数据中。但是,我们还将较小数组中的值放入同一表行中的另一个表数据中。哪个应该工作得很好,除了可能(甚至可能)两个数组的大小不同。因此,我们通过说我们将从较小的数组中获取值来处理它,除非我们想要的值不存在(我们知道它不会因为它在数组中的位置超过数组大小)。

它可能不是最优雅的解决方案,但我认为它会如你所愿地发挥作用。

答案 1 :(得分:0)

您的标签可能有误。

应该是这样的:

<th>7days</th>
<th>7days</th>

希望我能提供帮助。

答案 2 :(得分:0)

  • 额外&gt;删除了
  • 添加&gt;在最后/ th&gt;
  • 在第2行和第3行添加。

我认为你在此之后......我们是否错过了&lt; td&gt;对于第2行和第3行的第一列?

 <table>
<tr>
  <th>7days</th>
  <th>7days</th>
</tr>

<tr>
  <% @ls7days.values.each do |ls7day| %>

  <td><%= ls7day %></td>
</tr>
  <%end%>

<tr>
  <% @gt7days.values.each do |gt7day| %>

  <td><%= gt7day %></td>
</tr>
  <%end%>      

</table>

答案 3 :(得分:0)

不要将它们放在单独的表格行中。使用单独的列。

每个标记都是下一行的下一行。每个标记都是前一个标记旁边的单独列。如果您希望彼此相邻的值,请将它们放在相邻的标记中。