理解が曖昧だったため、整理のために記事を投稿。
それはcreateメソッドとそれ以外において、役割が異なるためである。
また、ここでは、newとindexメソッドは省く。
createメソッドの役割は、newのviewにおいて記載され、ストロングパラメーターとなった(許可された)情報を取得し、保存することにある。
そのため、データベースのテーブルから、レコードを一つ取り出すメソッドであるfind(params[:id])は使えない。
そのため、createメソッドに対し、params.requireの中身を代入することになる。
task.controller.rb
def create
@task=Task.new(task_params)
if @task.save
redirect_to tasks_path, notice: "作成しました"
else
render 'new'
end
end
private
def task_params
params.require(:task).permit(:title, :content, :start_time, :is_done, :pet_id, :family_id)
end
一方、show,destroy,edit,updateにおいては、テーブル内に保存されている1つのidに紐づいた情報を取得したい。
そのため、上記の場合には、find(params[:id])メソッドを使うことになる。
task.controller.rb
def show
@task = Task.find(params[:id])
end
def destroy
@task = Task.find(params[:id])
@task.destroy
redirect_to tasks_path, notice:"削除しました"
end
def edit
@task = Task.find(params[:id])
end
def update
@task = Task.find(params[:id])
if @task.update(task_params)
redirect_to tasks_path, notice: "編集しました"
else
render 'edit'
end
end
以上である。