前提
課題でショッピングアプリを作成しています。
今回のエラーは配送先を登録し、一覧の中から一件のみ削除する際に起きています。
自力で解決できないためよろしくお願いいたします。
実現したいこと
- 削除機能を実装すること
発生している問題・エラーメッセージ
ActiveRecord::RecordNotFound in Public::AddressesController#destroy Couldn't find Address without an ID
該当のソースコード
ruby_on_rails
1 def destroy 2 @addresses = Address.find(params[:address_id]) 3 @addresses.destroy 4 redirect_to addresses_index_path 5 end 6
試したこと
idの取得ができていないと思い、最初
ruby_on_rails
1@addresses = Address.find(params[:id])
としていたものから現在のように変えてみたのですが、エラー内容は変わらずidの取得ができていないようです。
※current_idなどを入れてみたりしましたがそれも同じくエラーが出てしまいました。
補足情報(FW/ツールのバージョンなど)
ruby_on_rails
1class Public::AddressesController < ApplicationController 2 def index 3 @address_new = Address.new 4 @addresses = current_customer.addresses.all 5 end 6 7 def create 8 @address_new = Address.new(address_params) 9 @address_new.customer_id = current_customer.id 10 @address_new.save 11 redirect_to addresses_index_path 12 end 13 14 def update 15 end 16 17 def edit 18 end 19 20 21 def destroy 22 @addresses = Address.find(params[:address_id]) 23 @addresses.destroy 24 redirect_to addresses_index_path 25 end 26 27 def address_params 28 params.require(:address).permit(:customer_id, :name, :postal_code, :address) 29 end 30end 31
↓は自分の住所や名前の表示と新規配送先登録を兼ねたものになります。
indexとnewを同じビューで扱っており、念のため全体のコードを貼っています。
ruby_on_rails
1<h1>自分の住所</h1> 2<h4>氏名</h4><%= current_customer.last_name %> <%= current_customer.first_name %><br> 3 <%= current_customer.last_name_kana %> <%= current_customer.first_name_kana %><br> 4 <h4>住所</h4><%= current_customer.postal_code %><br><%= current_customer.address %><br> 5<%= link_to "編集する", addresses_edit_path %> 6 7<%= form_with model: @address_new, url: addresses_create_path, method: :post do |f| %> 8 <%= f.label :郵便番号(ハイフンなし)%><%= f.text_field :postal_code %><br> 9 <%= f.label :住所 %><%= f.text_field :address %><br> 10 <%= f.label :氏名 %><%= f.text_field :name %><br> 11 <%= f.submit "新規登録" %> 12<% end %> 13 14<h4>お届け先一覧</h4> 15<div> 16 <table> 17 <thead> 18 <tr> 19 <th>郵便番号</th> 20 <th>住所</th> 21 <th>氏名</th> 22 <th></th> 23 </tr> 24 </thead> 25 <tbody> 26 <% @addresses.each do |addresses| %> 27 <tr> 28 <td><%= addresses.postal_code %></td><br> 29 <td><%= addresses.address %></td><br> 30 <td><%= addresses.name %></td><br> 31 <td> 32 <%= link_to "編集する", addresses_edit_path %> 33 <%= link_to "削除する", addresses_destroy_path, method: :delete, 34 "data-confirm" => "本当に削除しますか?" %> 35 </td> 36 </tr> 37 <% end %> 38 </tbody> 39 </table> 40</div>
ruby_on_rails/routing
1 addresses_index GET /addresses/index(.:format) public/addresses#index 2 addresses_edit GET /addresses/edit(.:format) public/addresses#edit 3 addresses_create POST /addresses/create(.:format) public/addresses#create 4 addresses_update PATCH /addresses/update(.:format) public/addresses#update 5 addresses_destroy DELETE /addresses/destroy(.:format) public/addresses#destroy

回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
2022/10/19 14:47 編集
2022/10/19 14:47
2022/10/20 14:44
2022/10/20 14:50
2022/10/22 04:52
2022/10/22 04:56
2022/10/22 07:08