簡體   English   中英

在 Ruby 中迭代數天

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM