ふわ

2021年04月04日に参加

学習履歴詳細

前後の期間へのリンク生成 - 体調グラフ機能

クエリパラメータをperiod=monthと指定してGETしても、@report.period = :weekになる。
pry.bindingで変数の中身を追っていくと、Strongparameterのperiodカラムがpermitされておらず、nilが返り, @report.periodがデフォルトの:weekになっていた。

アプリ制作

実現したいこと

体調グラフ機能

  • クエリパラメータでカラム・期間を指定してグラフを描画する

  • 異なるカラム・前後の期間へのリンクを生成する。

課題

以下の2つのメソッドを定義する必要があると考えた。

  • reportインスタンスのdate_begin, date_end, periodを受け取って、前後の期間へのクエリパラメータを返すメソッド
  • date_begin, date_end, colmunを受け取って同時期の別カラムへのクエリパラメータを返すメソッド

ここまで考えたところで、メンターに質問して、並行して自分で進める。

実装 前後の期間へのリンク生成

  • URIでperiod=monthと指定しても、@report.period = :weekになる
    • periodとdate_begin, date_endの差を検証していない=> 後に回そう
    • StrongParameterでperiodパラメータがpermitされていなかった。
  • 以下のように実装し、一応動いた。
# app/helpers/statistics_helper.rb
def previous_period_generator(report)
    date_begin_and_end = []
    if report.period == :month
      date_begin = report.date_begin << 1
      date_end = report.date_end << 1
    elsif report.period == :week
      date_begin = report.date_begin - 1.week
      date_end = report.date_end - 1.week
    else
      date_begin = report.date_begin - 1.week
      date_end = report.date_end - 1.week
    end
    date_begin_and_end << date_begin
    date_begin_and_end << date_end
    date_begin_and_end
end

def next_period_generator(report)
    date_begin_and_end = []
    if report.period == :month
      date_begin = report.date_begin << -1
      date_end = report.date_end << -1
    elsif report.period == :week
      date_begin = report.date_begin + 1.week
      date_end = report.date_end + 1.week
    else
      date_begin = report.date_begin + 1.week
      date_end = report.date_end + 1.week
    end
    date_begin_and_end << date_begin
    date_begin_and_end << date_end
    date_begin_and_end
  end
# app/views/statistics/report.html.erb
<h3><%= @report.column %></h3>

<% before = previous_period_generator(@report) %>
<%= link_to "", statistics_path(column: @report.column, date_begin: before[0], date_end: before[1]) %>
<p><%= @report.date_begin %>~<%= @report.date_end %></p>
<% after = next_period_generator(@report) %>
<%= link_to "", statistics_path(column: @report.column, date_begin: after[0], date_end: after[1]) %>

Image from Gyazo

プロを目指す人のためのRuby入門

  • 7.7.3 復習, 7.7.7復習, bashスクリプト記述
  • 7.8 定数
  • 7.9 さまざまな変数
  • 7.9.1 クラスインスタンス変数

bashの設定

チェリー本の学習記録として写経したコードと主な実行結果をファイルに残している。

実行結果をターミナルからコピペする手間が無駄なので、以下の設定をした。

  • samle.rbに実行結果をコメントアウトした状態で出力するスクリプトファイルを作成
  • 上記スクリプトファイルを実行するコマンドのエイリアスを設定

思ったこと

  • エラーもファイルに出力できるようにしたい
  • テストをかけるようにならないと、動作が正確か自信が持てない。手動のチェックが面倒
Ruby

2019年09月30日(月)

5.8時間