Ruby on rails 如何迭代数年和数周

Ruby on rails 如何迭代数年和数周,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我通过如下定义的路线访问周: get 'missions/:year/:week' => 'missions#index' 我想显示本周和2个链接,以转到上一周和下一周 我们需要知道下一周是哪一年“cweek”给了我正确的周数,但我需要知道年份 看来下个星期四是个不错的选择,但这有点难看。以下是我在任务索引操作中所做的工作,这样我就可以获得正确的URL: @week = params[:week] @year = params[:year] @start_date = Date.com

我通过如下定义的路线访问周:

get 'missions/:year/:week' => 'missions#index'
我想显示本周和2个链接,以转到上一周和下一周

我们需要知道下一周是哪一年“cweek”给了我正确的周数,但我需要知道年份

看来下个星期四是个不错的选择,但这有点难看。以下是我在任务索引操作中所做的工作,这样我就可以获得正确的URL:

@week = params[:week]
@year = params[:year]

@start_date = Date.commercial(@year.to_i, @week.to_i)

# To navigate between weeks
@prev_week = (@start_date - 1.week).cweek
@prev_year = (@start_date - 1.week + 4.days).year

@next_week = (@start_date + 1.week).cweek
@next_year = (@start_date + 1.week + 4.days).year

知道如何做得更好吗?

返回日期#cweek返回的周数的正确年份。因此,此方法使其成为将其与
cweek
一起使用的主要候选方法

# To navigate between weeks
@prev_week = (@start_date - 1.week).cweek
@prev_year = (@start_date - 1.week).cwyear

@next_week = (@start_date + 1.week).cweek
@next_year = (@start_date + 1.week).cwyear

返回
Date#cweek
返回的周数的正确年份。因此,此方法使其成为将其与
cweek
一起使用的主要候选方法

# To navigate between weeks
@prev_week = (@start_date - 1.week).cweek
@prev_year = (@start_date - 1.week).cwyear

@next_week = (@start_date + 1.week).cweek
@next_year = (@start_date + 1.week).cwyear

如果我是你,我会尽可能多地处理实际时间,即将实例变量设置为日期/时间对象:

@prev_week = @start_date - 1.week
@prev_year = @start_date - 1.year

@next_week = @start_date + 1.week
@next_year = @start_date + 1.year   
然后在实际链接中,在页面上:

<%= link_to "Next week", missions_path(:week => @next_week.week, :year => @next_year.year) %>
@next\u week.week,:year=>@next\u year.year)%>

etc

如果我是你,我会尽可能多地处理实际时间,即将实例变量设置为日期/时间对象:

@prev_week = @start_date - 1.week
@prev_year = @start_date - 1.year

@next_week = @start_date + 1.week
@next_year = @start_date + 1.year   
然后在实际链接中,在页面上:

<%= link_to "Next week", missions_path(:week => @next_week.week, :year => @next_year.year) %>
@next\u week.week,:year=>@next\u year.year)%>

对我来说,你的问题太令人困惑了。。你能告诉我你想要什么吗,这样我就能想办法了……下周四有什么事吗?@ArupRakshit访问/missions/2014/26时,我想在这个页面上有两个链接,分别指向/missions/2014/25和/missions/2014/27。问题是新年的结束和开始。@MaxWilliams重要的是要注意,对我来说,几周从周一开始,开始日期总是周一。这里所说的就是一个例子:如果我在2014年的第52周,我想去下一周。如果我只增加1周来获得年份,我将转到2014/1而不是2015/1,因为2014-12-29的日期是2014年,但这是第1周(商业周)。@MaxWilliams根据ISO 8601,第一周定义为该周,即一年中的第一个星期四。因此,思路并不是那么牵强。对我来说,你的问题太令人困惑了。。你能告诉我你想要什么吗,这样我就能想办法了……下周四有什么事吗?@ArupRakshit访问/missions/2014/26时,我想在这个页面上有两个链接,分别指向/missions/2014/25和/missions/2014/27。问题是新年的结束和开始。@MaxWilliams重要的是要注意,对我来说,几周从周一开始,开始日期总是周一。这里所说的就是一个例子:如果我在2014年的第52周,我想去下一周。如果我只增加1周来获得年份,我将转到2014/1而不是2015/1,因为2014-12-29的日期是2014年,但这是第1周(商业周)。@MaxWilliams根据ISO 8601,第一周定义为该周,即一年中的第一个星期四。因此,思路并不是那么牵强。Date类没有
#week
。另外,你的下一年对OP来说没有意义,因为它不应该是明年的今天,而应该是下周的一年。最后:OP已经在有意义的地方使用了实际的
Date
对象。Date类上没有
#week
。另外,你的下一年对OP来说没有意义,因为它不应该是明年的今天,而应该是下周的一年。最后:OP已经在有意义的地方使用了实际的
Date
对象。