打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
rails中使用group_by将数据分组显示
userphoto

2009.03.27

关注
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 %>
<ul>
    <% students.each do |student| %>
        <li><%= student.name%></li>
    <% end %>
</ul>
<% end %>

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


hash的循环方式:

2层循环,先对keys进行循环,然后是key对应的values进行循环.
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
结构体类型struct(c++)
5.数据交换之网页输出显示(beego)
use Chi-square test to test the gender difference between two groups
HashMap的存储与实现
Ruby学习笔记
Perl 与 Python 之间的一些异同
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服