Rails5でデータの削除機能を実装する
前提
MacOS 10.14.5
Ruby 2.5.0
Rails 5.2.3
- 編集機能はPaymentモデルに実装する
- Deviseをインストール済み
手順
1. paymentsコントローラに追記
def destroy @payment = current_user.payments.find(params[:id]) @payment.destroy redirect_to payments_path, notice: "支払い「#{@payment.item}」を削除しました。" end
2. 一覧ページに削除ボタンの追加
<table> <tr> <th><%= Payment.human_attribute_name(:created_at) %></th> <th><%= Payment.human_attribute_name(:item) %></th> <th><%= Payment.human_attribute_name(:price) %></th> <th><%= Payment.human_attribute_name(:category) %></th> </tr> <% @payments.each do |payment| %> <tr> <td><%= payment.created_at.strftime('%Y/%m/%d') %></td> <td><%= payment.item %></td> <td><%= payment.price %></td> <td><%= payment.category %></td> <td><%= link_to '編集', edit_payment_path(payment) %></td> <td><%= link_to '削除', payment, method: :delete, data { confirm: "本当に削除しますか?"} %></td> </tr> <% end %> </table>
3. routesに追記
resources :payments, only: [:index, :new, :create, :edit, :update, :destroy]