我正在使用Sinatra和Datamapper创建一个非常简单的分时应用程序。应用程序中的每个用户都将有n个预订,并且目前每个预订从周一到周日运行,每周只能进行一次预订。
现在我需要一个带有文本框(和标签)的视图,用于一年中的每个星期用户将其名称(通过自动完成或其他内容),从而创建该周的预订。如果保留一周,名称当然会填入文本框(并禁用)
这就像是
weeks.each do
find user that has reserved this week - and create a textbox
end
所以我想我的问题很简单 - 如何在Ruby中循环使用一周?
或者它是一个更好的解决方案,只需循环52次并为每个用户制作一个数组,其中包含预留周数?
答案 0 :(得分:2)
你应该循环使用:
(Date.beginning_of_year.cweek...Date.today.end_of_year.cweek).each do |week|
find user that has reserved this week - and create a textbox
end
答案 1 :(得分:1)
(1..52).each do |week|
# find user that has reserved this week - and create a textbox
end
答案 2 :(得分:0)
对于其他可能会发现这个老问题的人,就像我做的那样......
1月1日有时是第53周。12月31日有时是第1周。如果你想要在一年中的所有几周内完成,你必须首先决定是否要在1月的第一天,即使它可能是前一天。一年的第53周。
要获得一年中最高的周数,您可以随时查看12月28日(因为ISO周表示第1周是第一周的第一周)。
如果你不关心1月的前几天(可能是星期日),你可能会做以下事情:
require 'date' # Already included in sinatra though
(1..Date.parse("#{year}-12-28").cweek).each do |week|
puts week
end