一週間分の曜日をブラウザに表示する



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です。
よろしければアドバイスやコメント等お願いします!


この記事が気に入ったらサポートをしてみませんか?