2021年04月04日に参加
学習履歴詳細
体調グラフ機能, 期間とカラムの遷移に必要な機能を再度洗い出し、実現方法を検討する。
route.rb でConstraint::PeriodConstraintを使って, /statistics/activity/period/thisWeekの"thisWeek"の部分をこちらが指定した単語のみになるよう制限を加えている。しかしno route matchedエラーが出てしまい、うまく作動していない。原因がわからない。
アプリ制作
体調グラフ機能で週間のグラフ描画は実装することができた。しかし、週・月単位の期間の遷移と異なるカラムの遷移を実装できていない。
コントローラとHelperのみにそれらの機能を実装すると、肥大化してしまう。
そこで、Reportクラスをlib配下に作成して、必要な機能をすべてそこに実装することに決めた。
- 必要な機能の洗い出し
体調グラフ機能の洗い出し
- 期間の指定
- リンクから期間を指定する
- thisWeek, thisMonth, prevWeek, prevMonth
- 表示している期間の前後の期間へのリンクを生成する
- thisWeekなら、前後1週間へのリンク
- 期間をSep 15-22のような形で表示
- カラムの指定
- グラフは1カラムのみ描画する
- 表示しているカラム以外の2カラムへの同期間のリンクを生成する
期間の指定
- リンクから期間を指定する
- routing
- /statistics/:column/period/:period
- コントローラ
- StrongParameterの実行
params
のセットparams[:column]
がない場合は@column = :activity
, あれば@column
に代入params[:period]
がない場合は@period = thisWeek
, あれば@period
にセットparams[:period]
を解析してReport.new
- lib
Report
クラスReport::WeeklyReport
クラス- attribute
column
date_begin
date_end
- initialize
- column: paramsをそのまま
- date_begin:
params[:period]
を整形してセット - date_end: date_begin.end_of_week
- publicメソッド
- date_range: labelを生成
- url_for_next_period
- date_begin + 1.week.beginning_of_week
- date_end, date_beginのendofweek
- column, date_begin, date_endを合わせてurl文字列を返す
- url_for_previous_period
- 上と一緒
Report::MonthlyReport
クラス- View
- routing
わからないこと
- 表示する期間がweeklyからmonthlyかで生成するReportクラスを分けたい。
- ルーティングのcustome constraintで条件分岐をしてアクションを分ける
- アクションは1つにして、そのアクションの中で
prams[:period]
を解析して条件分岐
Ruby
Rails
2019年10月10日(木)
3.0時間