范围循环打印范围?

时间:2015-10-06 20:41:33

标签: ruby-on-rails ruby loops range

当我试图循环一周中的几天时,输出似乎只是范围的开始日期和结束日期,而不是我尝试打印的日期的名称。

我这样做是因为我想每天打印更多内容。这就是我模型中的内容:

(Date.today.beginning_of_week..Date.today.end_of_week).each do |day|
    day.strftime("%A")
end

我不知道为什么我在视图中得到的是:

2015-10-05..2015-10-11

如果有人可以对此有所了解,我真的很感激。

2 个答案:

答案 0 :(得分:2)

您希望它返回一个数组,但它只是返回原始的Range对象:

(Date.today.beginning_of_week..Date.today.end_of_week)

因为它是使用:each调用的。您可以改为使用:map

(Date.today.beginning_of_week..Date.today.end_of_week).map {|date| date}

但如果您在枚举日期时不需要转换日期,则只需使用:to_a

(Date.today.beginning_of_week..Date.today.end_of_week).to_a

答案 1 :(得分:0)

我不知道你是如何打印结果的,但是如果你引用了整个代码puts,那么它将打印each的接收者(日期范围;你现在有什么)如果要打印块中的内容,请将puts放在块内。

(Date.today.beginning_of_week..Date.today.end_of_week).each do |day|
  puts day.strftime("%A")
end