0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[有料級] Rails7(Turbo), Docker, Bootstrap5を使ったtodoリストの作り方第1章-5(Todoリスト削除編)

Last updated at Posted at 2023-04-18

前回のあらすじ

ここまでみていただきありがとうございます!
前回はTodoリスト一覧表示編でTodoリストの一覧表示ができるようになりました。
[有料級] Rails7(Turbo), Docker, Bootstrap5を使ったtodoリストの作り方第1章-4(Todoリスト編集編)

今回は作成したtodoリストを削除できるようにします。

事前準備

Dockerを一度止めている方はこちらのコマンドでDockerを起動し、コンテナに入りましょう。

docker-compose up -d
docker-compose exec app bash

ビューの編集

まずは一覧画面に削除ボタンを付けます

app/views/todos/index.html.slim
h1 Todo一覧

= link_to  "Todo追加", new_todo_path, class: "btn btn-primary"

table.table
  thead
    tr
      th scope="col" 題名
      th scope="col" 詳細
      th scope="col"
+     th scope="col"
  tbody
    - @todos.each do |todo|
      tr
        td = todo.title
        td = todo.description
        td = link_to "編集", edit_todo_path(todo), class: "btn btn-sm btn-success"
+       td = button_to "削除", todo, method: :delete, class: "btn btn-sm btn-danger"

コードの説明します。
method: :delete:HTTPリクエストのメソッドをDELETEに設定しています。

これで削除ボタンを実装することができました。
画面は以下のようになっています。
スクリーンショット 2023-04-18 18.16.49.png

コントローラーの編集

ボタンを押したらtodoをデータベースから削除して一覧画面を更新できるようにコントローラーを編集します。

app/controllers/todos_controller.rb
class TodosController < ApplicationController
  def index
    @todos = Todo.all
  end

  def new
    @todo = Todo.new
  end

  def create
    @todo = Todo.create(todo_params)
    redirect_to todos_path
  end

  def edit
    @todo = Todo.find(params[:id])
  end

+ def destroy
+   @todo = Todo.find(params[:id])
+   @todo.destroy
+   redirect_to todos_path
+ end

  private
    def todo_params
      params.require(:todo).permit(:title, :description)
    end
end

コードの説明をします。
@todo.destroy:Todoデータベースから特定したtodoデータを削除します。

これで削除機能の実装が終わりました。
実際に削除できているか検証してみましょう。

検証

  • 適当なtodoの削除ボタンを押して実際に削除できるか確認します。
    スクリーンショット 2023-04-18 18.26.04.png

上の画像のようにtodoが削除されていれば成功です。
何度か実際に試してみましょう。

総括

こちらで基本的なTodoリストの開発が完了しました!
お疲れ様です!
次回からはこれまで開発したTodoリストにTurboの要素を取り入れてより利用しやすくしたいと思います。

今回はここまで!

続けて読んでいただけるとありがたいです。

[有料級] Rails7(Turbo), Docker, Bootstrap5を使ったtodoリストの作り方第2章-1(モーダル画面作成編)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?