daigo01090118
@daigo01090118 (daigo ikeda)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

rails のエラーについて

解決したいこと

今rails5.2.4.2でECサイトのサンプルを作っているんですが
商品のレビュー機能をつけたあと、商品をクリックして商品詳細を開こうとすると
NoMethodErrorとなる
エラーメッセージで指しているのは、下記のコードです

発生している問題・エラー

   <div class="row">
       <div class="offset-md-5 col-md-5">
         <%= form_with model: @review, url: product_reviews_path(@product) do |f| %>
           <%= f.text_area :content, class: "form-control m-2" %>
             <%= f.submit "レビューを追加" , class:"btn samazon-submit-button ml-2"%>
           <% end %>

上記のコードの3行目が指定されています
reviews_pathはどこに遷移するためのパスなのでしょうか?

<%= form_with model: @review, url:product_reviews_path(@product)

スクリーンショット 2021-07-13 16.01.09.png

自分で試したこと

試したこととしては、
reviews_contorollerの確認
単純にreviewsとスペルミスしていないかの確認

質問として
1.どこのファイルを見たらいいのか
2.reviews_pathとはどこに遷移するためのパスなのか
3.そもそもpathとは付ける意味があるのかどうか
非常に知識がなくて申し訳ないのですが教えていただきたいです。

自分の前提が間違っているとは思いますが教えていただけると嬉しいです
よろしくお願いします!

0

1Answer

Did you mean? product_reveiws_path

とエラーに出ているとおり、どこかに product_reveiws というスペルミスがあります。少なくとも config/routes.rb の中にあるので直してください。またその route が指すコントローラクラス名やアクションメソッド名、コントローラのファイル名にあるスペルミスも同時に直してください。

_path とつける意味については Rails のルーティングについてのガイドを読んでください。 https://railsguides.jp/routing.html#パスとurl用ヘルパー

0Like

Comments

  1. @daigo01090118

    Questioner

    もう一回探してみたら、routes.rbの中でreviewsがreveiwsになっていました!
    エラー画面のDid you mean?は、「もしかしたらこれと間違えている?」というrails側のコメントと思っていいいでしょうか?
  2. はい、そういうことです。呼び出したメソッドが存在せず、似たような名前のメソッドがあったら Rails はそれを提案します。

  3. @daigo01090118

    Questioner

    なるほど。
    エラー画面の読み取り方がまだわからないので助かりました!

Your answer might help someone💌