2015-10-06 131 views
1

当我试图循环播放一周的日子时,输出结果似乎只是该范围的开始日期和结束日期,而不是我想要打印的日期的名称。范围循环打印范围?

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

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

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

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

如果有人能在这样一些启发,我真的欣赏它。

+0

你如何定义一个星期?周日到周六?或今天的天+/- 3天?你是否也可以在显示此视图的代码中发布代码? (不仅仅是模型方法) – onebree

+0

星期一到星期天,在我看来,我只是有<%= @ timetable.weekdays%>,因为它是在模型中标记为星期几的方法。 –

回答

2

你希望它返回一个数组,但它只是恢复原来的范围对象:

(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 
+0

这是最好的解决方案,因为看起来OP想要打印结果数组。对于新的Ruby开发者来说,'map'非常有用,并且会为你节省很多麻烦。 – onebree

0

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

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