Chinaunix首页 | 论坛 | 博客
  • 博客访问: 44768
  • 博文数量: 21
  • 博客积分: 1415
  • 博客等级: 上尉
  • 技术积分: 245
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-07 23:37
文章分类

全部博文(21)

文章存档

2011年(1)

2010年(1)

2009年(16)

2008年(3)

我的朋友
最近访客

分类:

2009-11-10 10:36:51

rails中使用group_by将数据分组显示

rails中支持group_by方法,在console里看看其工作原理:

>> a=(1..20).to_a
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
>> a.group_by{|num| num/5}
=> {0=>[1, 2, 3, 4], 1=>[5, 6, 7, 8, 9], 2=>[10, 11, 12, 13, 14], 3=>[15, 16, 17, 18, 19], 4=>[20]}
>>

通过一个block提出的条件将一个数组转化为一个hash.

hash的key是数组元素执行block之后得到的结果
value是原数组中执行block得到key的元素组成的数组.

所以,可以在rails中这么用:

譬如根据性别对学生进行分组:
@students=Student.find(:all)
@student_groups=@students.group_by{|s| s.gender}
-
那么现在得到的@student_groups就有两组,一组是male,一组是female.
在对其进行循环的时候,使用hash循环的方式:


<% @student_groups.each do |gender,students| %>
<%= gender %>

    <% students.each do |student| %>
  • <%= student.name%>

  • <% end %>

<% end %>

====结果如下:
female
lucy
jessi male
jack
jim
mike

hash的循环方式:

2层循环,先对keys进行循环,然后是key对应的values进行循环.
阅读(739) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~