Rails で ToDo アプリをつくる④ (Rails 入門)

↓の続きです。

utouto97.hatenablog.com

今回やること

今回は CRUD の D (Delete) を実装していきます。
つまり、ToDoの削除ということになります。

ルーティングの設定

まずは、DELETEメソッドに対応するルーティングの設定を行います。
ルーティングなので、config/routes.rbファイルに追記します。

delete '/:id' => 'todos#destroy'

idをURLで指定するようにしています。

コントローラーのアクション追加

続いて、ルーティングの設定でDELETEメソッドに紐付けられた、TodosControllerdestroyアクションを追加します。

def destroy
  @id = params[:id]
  @todo = Todo.find(@id)
  @todo.destroy
  redirect_to :action => 'index'
end

URLで渡されたidをパラメータとして受け取り、それをもとに対応するデータを見つけます。
その後destroyメソッドで削除します。
最後に、indexにリダイレクトします。

ボタンの変更

各ToDoを表示している際に、ダミーのDeleteボタンを追加していました。
これを実際の削除ができるように変更します。

-      <a href="#" class="btn btn-danger">
-        Delete
-      </a>
+      <%= link_to 'Delete', "/#{todo.id}", method: :delete, class: "btn btn-danger" %>

Railsでリンクを書くときは、link_toを使います。
そして、リンク先はそのToDoのidをもとに決定します。
また、メソッドをdeleteに設定しておきます。

ここまでで、ToDoのDeleteボタンを押すと、そのToDoが消えるようにすることができました。

続き

utouto97.hatenablog.com

終わり