LoginSignup
1
1

More than 3 years have passed since last update.

undefined method `**_path'のエラー

Last updated at Posted at 2020-09-26

記事の目的

初学者の為、間違っているところはご指摘頂けると幸いです。
備忘録・アウトプット目的で投稿です。

エラー内容

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を作り出しており、このパスは存在するのでエラーとならないようです。

1
1
4

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
1
1