はじめに
本記事では、初学者なりに私が何度も何時間も考え、
ようやく解消したものになります。
備忘録として残したいと思いましたので投稿いたします。
曜日の設定
私がトライしたものは、
以下の画像の曜日を設置するものでした。
*すでに完成したものを添付しております。ちょっと遊んでましたw
回答(曜日追加部分についての回答)
コントローラー
def get_week
wdays = ['日','月','火','水','木','金','土']
@week_days = []
@todays_date = Date.today
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 + x
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]}
@week_days.push(days)
end
end
end
ビュー
<div class='calendar'>
<% @week_days.each do |day| %>
<div class='item'>
<div class='date'>
<%= day[:month] %>/<%= day[:date] %>・<%= day[:wday] %>
</div>
<ul class='content'>
<% if day[:plans].length != 0 %>
<% day[:plans].each do |plan| %>
<li class='plan-list'>・<%= plan %></li>
<% end %>
<% end %>
</ul>
</div>
<% end %>
</div>
ミスしたこと
ビューは特に問題なかったですが、
コントローラーの記述がなかなかできずにいました。
①曜日を自動的記述できない
日月火水・・・と記述することがなかなかできず、
繰り返し処理
することだけが頭にあったため、
ひたすらwday_num = Date.today.wday + 1
と記述していました。
結果として、
毎日が翌日の曜日になるという表示になっていました。
ex.金金金金・・・・・
②xという存在
まず、日付については繰り返し処理が完成していたため、
それに気づかなかったのは反省点でした。
①で繰り返し処理ということがわかっていたのに、
それ同様に曜日も設定することの切り返しができていなかった。
③そもそも作るアプリケーションの理解が浅かった
まず、自分はカレンダーを想像していたため、
1ヶ月分まるまるの表示が必要になると勘違いをしてしまっていました。
つまり、30回、31回繰り返し処理が必要だと勘違いをしていたわけです。
今後は、どんなアプリケーション
なのかをイメージし、概要を把握
した上で、
取り組むことが必要だと感じました。
④配列の理解の浅さ
wdays = ['日','月','火','水','木','金','土']
wdays[0]
# =>'日'を取得できる
初歩の初歩。
ここを理解していたかと言われたら本当はそうではなかったです。
プライドを捨て、できないこと、理解していなかったところは、
理解できるように前に進みます。
終わりに
たくさんいろんな人にアドバイスをいただきながら完成しました。
これを完成させるのに20時間。。
できない自分に腹が立ち、それとともに自信が少しなくなりました。
ただ、
これがプログラミング、
これから就職したらこのようなことが起こるのだと感じました。
また、リアルに近いものを体験できたことは非常に価値のある時間だったとも感じました。
諦めず、自分をコントロールしながら乗り越えていけるよう引き続き頑張ります!