在Ruby中迭代了几天

Sli*_*k23 9 ruby ruby-on-rails-3

我尝试过以下方法:

def next_seven_days
  today = Date.today
  (today .. today + 7).each { |date| puts date } 
end 
Run Code Online (Sandbox Code Playgroud)

但这只是给了我第一个也是最后一个日期.我无法弄清楚如何在两者之间获得所有这些.

我试图按照这里的例子:http://www.whynotwiki.com/Ruby_/_Dates_and_times

Aar*_*ron 10

我想你想要更像这样的东西:

def next_seven_days
  today = Date.today
  (today .. today + 7).inject { |init, date|  "#{init} #{date}" } 
end
Run Code Online (Sandbox Code Playgroud)

在这种情况下,返回值是包含所有日期的连接字符串.

或者,如果它不是您想要的连接字符串,您可以更改"#{init} #{date}"它的一部分.

作为puts旁注,在轨道上使用红宝石不会打印到网页.使用时<%= next_seven_days %>,该函数的返回值将打印到页面.该each函数返回括号中的范围.

  • 我认为`.to_a.join("")`比使用`inject`更可读. (2认同)