曜日別で表示させる内容を変更する方法 【rails】【初心者向け】

現在開発中のトレーニング習慣化アプリでの以下の仕様があります。

・曜日によって表示されるメニューが変わる

 

これを実装していきます。

 

最初の段階では

レーニングメニューはこちらで用意します。

なので seeds.rb を以下のように編集。

TrainingMenu.create([{menu: "腕立て 20 × 3"}, {menu: "スクワット 20 × 3"}
,{menu: "腹筋 20 × 3"},{menu: "懸垂 20 × 3"},{menu: "リバースプッシュアップ 20 × 3"}
,{menu: "パームカール 20 × 3"},{menu: "フロントブリッジ 20 × 3"},])

rails db:seed コマンドでデータを作成。

 

この配列に対してfindメソッドでうまく取り出してやると

その日のメニューの表示ができそうです。

 

ここではDateクラスを用いて、その日の曜日を数値で取得します。

それをfindメソッドの引数にすることで、その日(曜日別)のmenuを取り出します。

 

training_menus_controller.rb

require "date" #Dateクラスをこのファイルで使用
def new
now = Time.now #ここで今日のtimeオブジェクトを取得し変数nowに代入
today = now.wday + 1 #上で取得した変数に対し、今日の曜日を数値で取得するwdayメソッドを当てる。
               日曜日なら0だが、配列のidで取得したいので1を足しておく
@training_menu = TrainingMenu.find(today).menu
#上で取得したtoday(月曜日なら 2 )でtrainingmenuテーブルのレコードを取得し
 カラムを当ててあげることでその値を取り出した
 
end

 

 

以上です。

 

意外と5分くらいで実装できました。

簡単な実装ですが間違いなく力がついてきているのは嬉しいですね。