ふわ

2021年04月04日に参加

学習履歴詳細

Dashboards#indexで前月のリンクをクリックすると当月の一覧にリダイレクトされる不具合を修正した。

原因の仮説が間違ってしまうこと。手を動かす前に事実を言葉にして原因をブレストした。

アプリ制作

  • 不具合

Dashboards#index

前月へのリンクをクリックすると、/dashboardへリダイレクトされる。

  • 原因
  Started GET "/dashboard/2019-12"

  vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:98
  Processing by DashboardsController#index as HTML
    Parameters: {"year_month"=>"2019-12"}

  Redirected to http://localhost:3000/dashboard
  Completed 302 Found in 29499ms (ActiveRecord: 0.4ms)

GET /dashboard/2019-12した後に、/dashboardにリダイレクトされている。

Dashboardコントローラを確認する。

  # Dashboard#index
  def index
    @diary = current_user.diaries.build
    if params[:year_month].nil?
      ....
    elsif Date.strptime(params[:year_month], '%Y-%m').month < Date.today.month
      ....
    else
      redirect_to '/dashboard'
    end
  end
  #

リクエストのパラメータに:year_monthが含まれる場合に、リクエストに含まれる:year_monthパラメータの月にあたる数値と現在の月の数値を比べ、リクエストした年月の数値の方が小さかった場合に、前月のレコードを検索して返す処理を記述していた。

年が変わって、12月のレコードが 12 < 1 でfalseとなってしまい、else節が実行されてしまうようになっていた。(なんでこんなこと書いたのか覚えてない…)

  • 対処
  # Dashboards#index
  ...
  elsif params[:year_month]
  ....

とした。

  • 結果

月ごとのレコードが表示される様になった。

  • 不具合(2)

ログアウトした後にログイン中のナビバーが表示される。

Ruby
Rails

2020年01月09日(木)

0.8時間