herokuでデプロイした際エラー画面になりログを確認しに行ったらNoMethodError (undefined method `threshold' for nil:NilClass):でした。ローカル環境ではしっかり作動しているのに@level = Level.find_by(number: @user.player_level + 1)で指定のレコードが見つからない理由がわからないです。
エラーログ
10行目が指摘されていたのでそこの記述
def index if user_signed_in? @tasks = current_user.tasks.where(point_id: nil) @user = current_user @level = Level.find_by(number: @user.player_level + 1) @nextlevel = @level.threshold - current_user.exp ここが10行目 end end
試したこと
def index if user_signed_in? @tasks = current_user.tasks.where(point_id: nil) @user = current_user @level = Level.find_by(number: @user.player_level + 1) if @level.nil @nextlevel = 0 else @nextlevel = @level.threshold - current_user.exp end end
追記
上の条件式で一覧は表示されるようになりました。しかしアップデートアクション後に同じことで怒られています。
def update @task = Task.find(params[:id]) # タスクのポイントを確定 @task.update(task_params) # userを確定 @user = current_user @level = Level.find_by(number: @user.player_level + 1) # userの今の経験値が入る @tmp_exp = @user.exp # 今現在の経験値 + 今回の経験値 @total_exp = @tmp_exp + @task.point_id # ユーザーのトータル経験値を保存 @user.update(exp: @total_exp) # レベルアップ処理 if @level.threshold <= current_user.exp ⬅️この部分 @user.player_level += 1 @user.save end redirect_to root_path end
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/08 09:21
2020/10/08 12:58
2020/10/08 12:59
2020/10/08 13:58
2020/10/08 22:37
2020/10/08 22:39
2020/10/09 05:01
2020/10/09 07:57
2020/10/09 08:56