初めに
削除機能の実装でエラーに遭遇したので書きます。
問題
削除ボタンを押したときに、Couldn't find Template without an ID
が起きました。
解決方法
before_actionにindexアクションを指定していたので削除しました。
# before_action :set_template, only: [:index, :edit, :update, :destroy]
before_action :set_template, only: [:edit, :update, :destroy]
def set_template
company = Company.find(params[:company_id])
@template = company.templates.find(params[:id])
end
set_template で何をしているか?
インスタンス変数 @template に /company_id/templates/id を代入して、template個別のidを取得している。
- ターミナルログ
/admin/companies/2/templates(一覧ページ)
Parameters: {"company_id"=>"2"}
→ idが取得できていない。一覧ページは template個別のidを取得してくる必要が無いからindexを指定しなくていい。
終わりに
ターミナルのログを見て解決できることを学びました。