以相反的顺序获得最后14天

Fel*_*ger 3 ruby ruby-on-rails

我想在视图中打印过去14天中每一天的统计数据.

为此,我打算创建一系列日期,从今天开始到第14天结束(回到过去),迭代 .each在视图中.

most_recent   = Date.current
least_recent  = Date.current.ago(14.days)
Run Code Online (Sandbox Code Playgroud)

这不起作用:

most_recent..least_recent.each
Run Code Online (Sandbox Code Playgroud)

这似乎不起作用:

(most_recent).downto(least_recent).each
Run Code Online (Sandbox Code Playgroud)

任何想法如何实现这一目标?

Ste*_*fan 8

我用的是Numeric#ago:

14.downto(0) do |i|
  date = i.days.ago
end
Run Code Online (Sandbox Code Playgroud)

你尝试不起作用因为most_recent大于least_recent(我在这里使用整数,但日期相同):

(0..-14).to_a      #=> []
-14.downto(0).to_a #=> []
Run Code Online (Sandbox Code Playgroud)

这些方法只能"从低到高":

(-14..0).to_a      #=> [-14, -13, -12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0]
0.downto(-14).to_a #=> [-14, -13, -12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0]
Run Code Online (Sandbox Code Playgroud)


Aru*_*hit 5

这是怎么用的Date#downto

require 'date'

dt = Date.today
dt.downto(dt-5){|d| puts d }
Run Code Online (Sandbox Code Playgroud)

输出:

2013-09-27
2013-09-26
2013-09-25
2013-09-24
2013-09-23
2013-09-22
Run Code Online (Sandbox Code Playgroud)