Ruby on Rails 始めました

Javaやphpはそこそこ書ける程度の人が、Ruby on Railsを一から習得する過程を記したサイト

初めてのRuby on Rails入門

リソースの削除機能を実装する

 さて、引き続き電話帳アプリを作っていきます。前々回までで一覧画面、新規作成画面、編集画面ができました。

 今回は、リソースの削除機能を実装します。

削除処理のルーティングを確認する

 まずルーティングを確認してみましょう。

 9行目がmemberリソースの削除用に用意されたリクエストです。

 見ての通り、
メソッドはDELETE
urlは/members/:id
となっています。

 つまり、ID1番のmemberリソースを削除したい場合は、/members/1へとdeleteメソッドによるhttpリクエストを送ればいいというわけです。
※もちろん削除処理自体は自分で書く必要があります。

削除リクエストを送るリンクを作る

 まず削除リクエストを送るためのリンクを作ります。ボタンにしてもいいのですが、ここでは普通のリンクにします。

 削除は一覧画面ではなく、各編集画面からできるようにしたいと思います。

 views/members/edit.html.erbを開いて、5行目を挿入して下さい。

 link_toメソッドを使ってaタグを出力しています。結果的に、以下のaタグが出力されることになります。

 おさいになりますが、link_toメソッドの第一引数にアンカーテキストを、第二引数にリンク先urlを渡すことで、aタグを出力しています。

  出力↓↓

 上記の削除リンクについては引数が1つ増えています。第三引数以降はオプションで、キーを指定した上でその値を渡します。
※指定できるオプションは他にもあります。詳しくは→link_to – リファレンス – – Railsドキュメント

  出力↓↓

 この場合、aタグにdata-method="delete"という属性が追加されているのが分かると思います。
rel="nofollow"も自動的に追記されています。

 これで各編集画面に、削除リクエストを送るボタン(というかリンク)が出来ました。

destroyアクションを追加して削除処理を実装する

 この削除リクエストに反応するのが、destroyアクションです。ルーティングを確認してください。

 membersコントローラーにdestroyアクションを追加して、リソースをDBから削除する処理を実装しましょう。

 /app/controllers/members_controller.rbを開いて下さい。

 destroyアクションを追加します。

 その中で、リクエストパラメータに含まれるIDから該当のMemberオブジェクト(モデル)を作って、destroyメソッドで削除してしまいます。

注)このdestroyメソッドはモデルクラスが持つインスタンスメソッドであって、destroyアクションとは全然別物なので混同しないように。

 たったこれだけの表記で、テーブルから該当の一行(一人のデータ)を削除してしまえるんです。Railsって楽ちんです。

 削除するだけでは、その後表示する画面がなくてエラーになるので、一覧画面へとリダイレクトを行ってdestroyアクション終了です。

確認ダイアログを出す

 これで削除するのリンクをクリックすれば、そのmemberリソースを削除することができるようになりました。

 が、削除する場合、確認ダイアログを出してあげた方が親切です。

なので、削除するリンクをクリックした際に、まずこの確認ダイアログが表示し、OKをクリックして初めて削除処理が走るようにしましょう。

 views/members/edit.html.erbを開いて下さい。

 いちいちJavascriptを書くのは面倒ですが、Railsならめちゃ簡単です。なんとlink_toメソッドにもう一つオプションを追加するだけで出来ます。

 これだけです。

 第四引数に
data: {confirm: “本当に削除しますか?”}
を渡すだけで、確認ダイアログ用のJavascriptを出力してくれます。

 これで削除処理も完成です。

コメントを残す




関連記事

Pick Up