質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

1回答

619閲覧

削除処理実行時(削除ボタンクリック時)にエラーが発生

wantonsong

総合スコア3

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/07/28 14:11

前提・実現したいこと

削除処理実行時(削除ボタンクリック時)にエラーが発生しました。

発生している問題・エラーメッセージ

エラーメッセージ Couldn't find Product with 'id'= def show #ここに処理を実装 @Product = Product.find(params[:id]) @posts = Product.where(id: @Product.id) end def destroy #ここに処理を実装 @Product = Product.find(params[:id]) if @Product.user_id = current_user @Product.destroy end end ### 該当のソースコード show.html.erb <div class= "profile_page"> <div class="products"> <div class="edit"> <form method="post" action="#" enctype="multipart/form-data"> <div class="field"> <span class="sale">販売中</span> </div> <div class="field"> <h1>ネックレス</h1> </div> <% @posts.each do |post| %> <div class="field" style="text-align: center;"> <span><%= image_tag "/images/#{post.image1}" , :width => '300' %></span> </div> <div class="field"> <!--<span>カテゴリー:ハンドメイド</span>--> <span>カテゴリー:<%= post.category.name %></span> </div> <div class="field"> <p>¥<%= post.price %></p> </div> <div class="field"> <span>販売手数料(10%):¥<%= fee = (post.price * 0.1).floor %></span> </div> <div class="field"> <span>販売利益:¥<%= post.price - fee %></span> </div> <div class="edit_button"> <input type="submit" value="編集する"> </div> <div class="field"> <span><%= post.description %></span> </div> <div class="field"> <span>削除する<%= link_to show_path(post), method: :delete %></span> </div> <% end %> </form> </div> </div> <%= render partial: 'users/mypage' %> </div> routes.rb Rails.application.routes.draw do # get 'users/profiles' # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html root 'markets#top' get '/users/sign_up', to:'users#sign_up', as: :sign_up post '/users/sign_up', to:'users#sign_up_process' get '/users/sign_in', to:'users#sign_in', as: :sign_in post '/users/sign_in', to:'users#sign_in_process' get '/users/sign_out', to:'users#sign_out', as: :sign_out get '/users/profiles/', to:'users#profiles', as: :profiles get '/users/profiles/edit', to:'users#profiles_edit', as: :profiles_edit get '/users/likes', to:'users#likes', as: :likes get '/users/products', to:'users#products', as: :products get '/users/products/{id}', to:'users#show', as: :show delete '/users/products/{id}', to:'users#destroy' get '/users/products/{id}/edit', to:'users#products_edit', as: :products_edit get '/users/products/new', to:'users#new', as: :new post '/users/products', to:'users#create' get '/', to:'markets#top', as: :top get '/markets/{id}', to:'markets#detail', as: :detail get '/markets/{id}/payment', to:'markets#payment', as: :payment end ```ここに言語名を入力 ソースコード

ruby on rails

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

<span>削除する<%= link_to show_path(post), method: :delete %>
に違和感があります
routes には show_path を作る定義が見当たらないし、削除ですからshowではなくdelete、、、、
<span>削除する<%= link_to delete_post_path(post), method: :delete %>
だと思いますが、にしても routesへの定義追加を。

投稿2020/07/28 22:53

winterboum

総合スコア23567

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wantonsong

2020/07/29 11:10

ご回答ありがとうございます。 ご指摘頂いた通り、コードを書き換えましたが、改善されません。 またroutes.rbへは以下の通り、deleteメゾットを書き換えました。 delete '/users/products/{id}', to:'users#destroy' →delete '/users', to:'users#destroy', as: :delete_post ruby on railsの操作に慣れていないため、うまく質問が出来ませんが、 なぜこの様なエラーが発生するのか、詳しく教えて頂けると非常に嬉しいです。 (こちらスクールの課題ですが、railsに精通している講師がいない為、聞くに聞けない状況です;;)
winterboum

2020/07/29 12:03

delete '/users/products/{id} は productを削除したいのですよね? ですと users#destroy ではなく products#destroy です。
winterboum

2020/07/29 12:09

あと routesよく見ると {id} って書き方有るのかな :id が普通で、{id}は見たことがないです。 それが paramsにidが渡っていない原因かも。 rails routes で診てください。 それと、そのようにずらずら書くのではなく resources の使い方を覚えましょう。 標準的なrouteを定義してくれるので、話が通りやすいです。 https://railsguides.jp/routing.html とか https://qiita.com/ShuntaShirai/items/8968a73ff1797a566006 とか
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問