Rails宝典之第二十九式: group_by

这次来看active_support/core_ext/enumerable.rb里的group_by:
[code]
# latest_transcripts.group_by(&:day).each do |day, transcripts|
# p "#{day} -> #{transcripts.map(&:class) * ', '}"
# end
# "2006-03-01 -> Transcript"
# "2006-02-28 -> Transcript"
# "2006-02-27 -> Transcript, Transcript"
# "2006-02-26 -> Transcript, Transcript"
# "2006-02-25 -> Transcript"
# "2006-02-24 -> Transcript, Transcript"
# "2006-02-23 -> Transcript"
[/code]
看看视频中的例子:
[code]
class TasksController < ApplicationController
def index
@tasks = Task.find(:all, : order => 'due_at, id', :limit => 50 )
@task_months = @tasks.group_by { |t| t.due_at.beginning_of_month }
end
end
[/code]
我们对@tasks的due_at.beginning_of_month做group_by,看看页面中的使用:
[code]
<h1>Tasks</h1>

<% @task_months.keys.sort.each do |month| %>
<h2><%= month.strftime('%B') %></h2>
<% for task in @task_months[month] %>
<div class="task">
<strong><%= task.name %></strong>
due on <%= task.due_at.to_date.to_s(:long) %>
</div>
<% end %>
<% end %>
[/code]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值