一週間分の曜日をブラウザに表示する
def get_week
wdays = ['(日)','(月)','(火)','(水)','(木)','(金)','(土)']
@todays_date = Date.today
@week_days = []
plans = Plan.where(date: @todays_date..@todays_date + 6)
7.times do |x|
today_plans = []
plans.each do |plan|
today_plans.push(plan.plan) if plan.date == @todays_date + x
end
wday_num = Date.today.wday
if wday_num >= 7
wday_num = wday_num -7
end
days = { month: (@todays_date + x).month, date: (@todays_date + x).day, plans: today_plans, wday: wdays[wday_num + x]}
end
end
今回、私が取り組んだのは「曜日の追加」です。日付を追加するための記述もありますが、この回では曜日の追加のポイントをお伝えします。
[ポイント]
今日の曜日の数値 - 7 で今日の曜日の数値を表せる!
wday_num = Date.today.wday
if wday_num >= 7
wday_num = wday_num -7
end
なぜ「-7」をするのか?
→ 一週間の日付(例: 12/18(土)..12/24(金))を表示するために7回(一週間分)繰り返し処理を行なっているため。
Date.today.wdayは日〜土曜日を数値で表します。そのため、例えば今日が金曜日だったら、その数値は「5」であり、さらに7回繰り返し処理を行うと「12」になってしまいます。
Date.today.wdayは「0〜6」の数値でしか曜日を表せないため、エラーを起こさないためにこの記述をします。
ご覧いただきありがとうございます。これはアウトプット用のnoteです。
よろしければアドバイスやコメント等お願いします!