ネストの意義

・エラー内容

prototypeコントローラーのshowアクションで定義した@comment = Comment.newをshow.html.erbのform_withを利用してcommentsコントローラーのcreateアクションで保存しようとしたところ以下のエラーが出た。

f:id:Fujisan3776:20201015093300p:plain

 

・原因

ルーティングのネスト設定忘れ

f:id:Fujisan3776:20201015093625p:plain

→NoMethodErrorなのでアクションやインスタンス変数の定義ミスやビューファイルの構文ミスかと考え、prototypesコントローラーとshow.html.erbとcommentsコントローラーを何度も何度も行き来しながら確認しましたが解決できず、解決まで半日を要しました。

 

・対処法

ルーティングでprototypesコントローラーとcommentsコントローラーをネスト関係にさせた。

f:id:Fujisan3776:20201015093911p:plain

なお、これによりエラー内容で求められていたPrefixコード(prototype_comments_path)も無事に定義された事が確認された。

f:id:Fujisan3776:20201015094006p:plain

 

※コメントを投稿する=どのプロトタイプの投稿か?を紐付ける必要があり、prototypesテーブルとcommentsテーブルには紐付けが必要になる。