記事の目的
初学者の為、間違っているところはご指摘頂けると幸いです。
備忘録・アウトプット目的で投稿です。
##エラー内容
new.html.slim
= form_with model: @review, local: true do |f|
.form-group
= f.label :purpose
= f.text_field :purpose, class:'form-control', id: 'review_purpose'
において、以下の「undefined method `reviews_path'」というエラーが発生。
そもそもreviews_path定義していないけどな。
ActionView::Template::Error (undefined method `reviews_path' for #<#<Class:0x00007fb7553f5138>:0x00007fb7553fc9b0>):
調べると、以上の「= form_with model: @review, local: true do |f|」のコードにおいては、form_with model: @review の箇所が内部的にpolymorphic_path(@review)というメソッドを実行しているそうで、 その実行結果がreviews_pathとなるのでそこでエラーが起きているらしい。
##対処法
記事をみてみると、以下のように「form_forでしっかりどこに飛ばすのか指定してあげれば解決するらしい。解決。
new.html.slim
= form_for @review,:url => {:action => :create} do |f|
こちらに関しては、urlのオプションから実行しているコントローラーのnewアクションに該当するpathを作り出しており、このパスは存在するのでエラーとならないようです。