[英]Iterating over days in Ruby
我嘗試了以下方法:
def next_seven_days
today = Date.today
(today .. today + 7).each { |date| puts date }
end
但這只是給了我第一個和最后一個日期。 我不知道如何在兩者之間獲得所有這些。
我試圖按照這里的例子: http://www.whynotwiki.com/Ruby_/_Dates_and_times
我想你想要更像這樣的東西:
def next_seven_days
today = Date.today
(today .. today + 7).inject { |init, date| "#{init} #{date}" }
end
在這種情況下,返回值是一個包含所有日期的串聯字符串。
或者,如果它不是您想要的連接字符串,您可以更改它的"#{init} #{date}"
部分。
附帶說明一下,在軌道上使用puts
中的 put 不會打印到 web 頁面。 當您使用<%= next_seven_days %>
時,該 function 的返回值將打印到頁面上。 each
function 返回括號中的范圍。
您的代碼肯定會將所有八天都打印到標准輸出。 您的問題是您正在查看返回值(因為each
返回self
將是(today.. today + 7)
)。
請注意,如果您在 erb 模板中打印到標准輸出,則不會導致 output 出現在呈現的模板中。
您的 function 返回一個由 2011-07-07..2011-07-14 指定的枚舉,該枚舉顯示在您的視圖中,但您的 puts 打印到 STDOUT 這不是您的視圖,而是您的服務器正在運行的控制台屏幕=)
如果您希望您的視圖顯示 7 天的列表,您需要實際創建執行該操作的字符串並返回:)
def next_seven_days
outputstr = ""
today = Date.today
(today..(today+7.days)).each { |date| outputstr += date.to_s }
return outputstr
end
def next_seven_days
today = Date.today
(today..(today+7.days)).each { |date| puts date }
end
使用“下一個”方法
def next_seven_days
today= Date.today
7.times do
puts today
today=today.next
end
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.