1

我有以下模型:students、groups_by_student 和 groups。

一行学生表是city_id,所以我要显示一个html表

            Total      group1     group2     group3
city1         30         10         5         15
city2          2          0         0          2
city3         20         10        10          0
city4          5          0         5          0
city5         10          0         2          8

这就是我所做的:

groups = Group.find([1,4,6]) #Array of groups id's

total = []
groups.each do |g|
  total << Student.joins(:groups_by_students).where(:groups_by_students => {:group_id => g.descendants}).count(:group => :city_id)
end

#I'm using AwesomeNestedSet gem, so g.descendants gives group children.

所以现在我有一个包含 3 个哈希的数组,其中包含作为键的城市 ID 和作为值的学生总数,但现在我不确定如何在 html 表中呈现这些数据。

如何迭代每个“总”元素?还是有另一种获取此信息的方法?

提前致谢

哈维尔

编辑:

这是总数组

total = [
    {city1 =>10, city3 => 10},
    {city1 => 5, city3=>10, city4=>5, city5 => 2},
    {city1 => 15, city2 => 2}
]

现在,如果该组没有值,我必须将每个 td 标签放在 html 表内的 0 中。

4

2 回答 2

0

这就是我所做的,可能会对您有所帮助:(这里的总值是最后一列)

<table>
<% i = 1%>
<% total = 0%>
<% city=""%>
<% 5.times do %>
<tr>
<% city = 'city'+ "#{i}" %>
<% @total.each do |hash| %>
<% if(hash[city].nil?)%>
<% hash[city] = 0 %>
<%end%>
<% total += hash[city].to_i %>
<td><%= hash[city] %></td>
<%end %>
<td> <%= total %></td>
<% total = 0 %>
<% i += 1 %>
</tr>
<%end%>
</table>

这里的行是由城市而不是组控制的。因此,除了双循环之外,我找不到任何其他方式。如果您需要在第一列中打印该总数,然后在接下来的信息中显示其余信息,那么我认为您需要先显示总数,然后再次循环并显示每个组的城市值此外,为此您需要知道之前的城市数量,否则我们将不知道为特定组中的特定城市打印“0”

于 2012-08-04T01:42:21.310 回答
0

我遍历了一个哈希数组,例如;

ary.each do |hash| puts "<tr>#{hash.keys} : #{hash.values}</tr>" end

你能破解它以满足你的需要吗?恐怕你的问题并没有提供很多工作。

于 2012-08-03T20:49:54.897 回答