gpt4 book ai didi

ruby-on-rails - 如何在 Ruby 中遍历给定一周的每一天?

转载 作者:数据小太阳 更新时间:2023-10-29 08:25:25 26 4
gpt4 key购买 nike

我使用以下定义星期一和星期五:

@monday = Date.today.at_beginning_of_week

@friday = 5.days.since(@monday)

但实际上,对于任何给定的一天,我都需要循环遍历星期一、星期二、星期三并获取该日期并将输出放入列中。

<th>Monday</th>
<th>Tuesday</th>
etcetera

例如,给定的行将是:

<tr><td>method_with_arg(monday)</td><td>method_with_arg(tuesday)</td><td>method_with_arg(wednesday)</td></tr>

这里的 value 是一个接受 args 日期的方法。

最干净的方法是什么?

谢谢。

最佳答案

def dates_week(d)
(d.beginning_of_week...d.beginning_of_week+5).map{|a|
"<td>#{a.strftime('%F')}</td>"
}.join
end

dates_week Date.today
#=> "<td>2010-05-17</td><td>2010-05-18</td><td>2010-05-19</td><td>2010-05-20</td><td>2010-05-21</td>"

除了 a.strftime,您还可以调用任何其他接收日期并返回字符串的方法,例如 mails_sent_on(a) 等。您还可以使用 yield a 在那里使用 block 传递您的日期相关逻辑:

def dates_week(d)
(d.beginning_of_week...d.beginning_of_week+5).map{|a|
yield a
}.join
end

dates_week(Date.today) { |d|
"<td>#{mails_sent_on(d)}</td>"
}

或者,将字符串保留在 dates_week 方法之外:

def dates_week(d)
(d.beginning_of_week...d.beginning_of_week+5).map{|a|
yield a
}
end

dates_week(Date.today) { |d|
mails_sent_on(d)
}.join(', ')

或您需要的任何形式。

关于ruby-on-rails - 如何在 Ruby 中遍历给定一周的每一天?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2860055/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com