Pythonとサラリーマンと

2020年6月にPythonを始めたサラリーマンのブログです。

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]