0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ArgumentError in TasksController#updateの解決

Posted at

まずはgiven0,expected1の部分が引数の数があっていないエラーだと言うことを認識する

その上で結論、(task_params)と言う記述が必要でした

じゃあそれって何だっけってなって、ちゃんと見てみることに

889bc80b3c184bbcc434429245f79351.png

まずは赤くチェックされているのを確認

見てみると51行目が怪しい。
50行目はタスクテーブルから特定のレコードを取得し@taskに代入している。
そして51行目でもしそれが更新されたらと言うif文がある。ここの@taskに注目。
updateは更新したデータに置き換えるアクションなので、またモデルを通してテーブルに保存するので必要なものがあります。
意図しないデータの登録・更新を防ぐためにストロングパラメーターです。
ストロングパラメーターてどこ?

ストロングパラメーターを確認


private
def task_params
  params.require(:task).permit(:content, :point_id).merge(user_id: current_user.id)
end

private下に既に用意してあるもので、createの時も必要です。ここで定義したたtask_paramsを引数として渡す必要があったのです。
したがって引数の数があっていないと叱られエラーを引き起こしていました。

正解

def update
    @task = Task.find(params[:id])
    if @task.update(task_params)  ←ここに追記
      redirect_to root_path
    end

これによってエラーを解消することができました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?