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

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


hash的循环方式:

2层循环,先对keys进行循环,然后是key对应的values进行循环.




本文转自 fsjoy1983 51CTO博客,原文链接:http://blog.51cto.com/fsjoy/113470,如需转载请自行联系原作者
目录
相关文章
|
JavaScript 前端开发 Java
51jqGrid 分组 - 远程数据(排序过)
51jqGrid 分组 - 远程数据(排序过)
42 0
51jqGrid 分组 - 远程数据(排序过)
|
前端开发 开发者 容器
|
JavaScript 前端开发 Java
52jqGrid 分组 - 远程数据(grandtotals排序)
52jqGrid 分组 - 远程数据(grandtotals排序)
48 0
|
存储 SQL 关系型数据库
mysql数据分组 group by 多条件分组但条件不并列的分析
mysql数据分组 group by 多条件分组但条件不并列的分析
623 0
Ant Design:Radio.Group单选组合与Select下拉选项两种添加子组件选项的语法
Ant Design:Radio.Group单选组合与Select下拉选项两种添加子组件选项的语法
256 0
|
SQL 关系型数据库 MySQL
|
关系型数据库 MySQL 数据库
MySQL的分组和分组后筛选语句(十七)
MySQL的分组和分组后筛选语句(十七)
645 0
MySQL的分组和分组后筛选语句(十七)
|
NoSQL Java MongoDB
mongodb命令行group分组和java代码中group分组
group分组统计是数据库比较常用的功能,mongodb也不例外。不过相对于普通的增删改查,group操作就略微麻烦一些, 这里对group在shell中的操作、使用java原生代码操作以及集成spring进行操作进行一个简单的归纳总结,分组的途径和方法应该都有多种,这里每一样只举一例。 本例中数据源如下: 需要使用group实现的目的是:按年龄分组统计出每一组的数量。 1、mo
5937 0
|
Shell 数据安全/隐私保护
Ansible用户模块user和组模块group(学习笔记七)
user:生成用户、删除用户 group:生成组、删除组 1、生成用户:ansible all -m user -a "name=test password=1DhUWqz2JZqc home=/home uid=999 comment=‘this i...
1122 0