我需要按小时订购@events
,没有日期。
我有代码:
<% @events.sort_by(&:start_time).each do |event| %>
<%= event.start_time.strftime('%H:%M') %>
<% end %>
结果是:
02:00 # => 2015-11-27 02:00:00 +0200
03:05 # => 2015-11-27 03:05:00 +0200
04:00 # => 2015-11-27 04:00:00 +0200
`03:45 # => 2015-12-04 03:45:00 +0200`
所需的结果是:
02:00 # => 2015-11-27 02:00:00 +0200
03:05 # => 2015-11-27 03:05:00 +0200
'03:45 # => 2015-12-04 03:45:00 +0200'
04:00 # => 2015-11-27 04:00:00 +0200
问题是最后一行有更新的日期。
如何对@events
进行排序以获得上述结果?
答案 0 :(得分:4)
@events.sort_by(&:start_time)
应该是......
@events.sort_by{|ev| ev.start_time.strftime('%H:%M')}
或
@events.sort_by{|ev| [ev.start_time.hour, ev.start_time.minute]}
我使用您提供的相同输入尝试过它们并且它们完美地工作。祝你好运。
答案 1 :(得分:3)
请尝试以下代码:
@events.sort_by{|e| e.start_time.strftime('%H:%M')}