Modelによるデータベースアクセスの基本 (4/4)
作成:2012-02-13 07:51
更新:2012-02-16 15:38
更新:2012-02-16 15:38
■データの削除(Delete)とroutes.rbの修正
最後に、削除についてです。これは「destroy」というアクションとして用意しましょう。IDをパラメータとして送信し、削除を行ったらリダイレクトしてindexに戻ります。表示はありませんから、Viewテンプレートも用意する必要はありません。
下のリスト欄にそのサンプルを挙げておきました。まず「find」で削除するデータのModelインスタンスを取得し、後は「destroy」というメソッドを呼び出すだけです。
実際にこれらの修正をしたWebアプリをデプロイし、アクセスしてもそれぞれのアクションにはアクセスできません。ほら、何か重要なことを忘れてませんか? そう、routes.rbの修正です。
下のリスト欄に、routes.rbに追記する文をあげておきました。前回までgetやpostというのでGET/POSTアクセスの指定を指定ましたが、今回はmatchを使っています。これは、こんな具合に書いています。
――これでひと通りのアクションは作成できました。とりあえずいろいろとデータの追加や更新・削除などを行なってみて、問題なく動くかどうか確認しておきましょう。「それにしてもroutes.rbの書き換えとか面倒くさいな」と思うでしょうが、このへんはまた改めて触れる予定ですので……。
下のリスト欄にそのサンプルを挙げておきました。まず「find」で削除するデータのModelインスタンスを取得し、後は「destroy」というメソッドを呼び出すだけです。
《Model》.destroyこれだけです。非常に簡単ですね。――さあ、これでひと通りの機能は実装できました!
■routes.rbを修正する
実際にこれらの修正をしたWebアプリをデプロイし、アクセスしてもそれぞれのアクションにはアクセスできません。ほら、何か重要なことを忘れてませんか? そう、routes.rbの修正です。
下のリスト欄に、routes.rbに追記する文をあげておきました。前回までgetやpostというのでGET/POSTアクセスの指定を指定ましたが、今回はmatchを使っています。これは、こんな具合に書いています。
match 'アドレス' => 'コントローラー名#アクション名'尚且つ、パラメータ(ここではID)を指定して呼び出したいような場合には、それらも指定していますね。こんな具合です。
match 'アドレス/:id' => 'コントローラー名#アクション名'これで、最後に~○○/1というようにアドレスを指定することで、ID=1をパラメータとして受け渡せるようになるわけです。○○?id=1なんて指定をするよりはるかにわかりやすく、アドレスも非常にすっきりとしますね。このmatchを使ったルートの指定はとても重要ですのでここでしっかり覚えておきましょう。
――これでひと通りのアクションは作成できました。とりあえずいろいろとデータの追加や更新・削除などを行なってみて、問題なく動くかどうか確認しておきましょう。「それにしてもroutes.rbの書き換えとか面倒くさいな」と思うでしょうが、このへんはまた改めて触れる予定ですので……。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
※destroyアクションメソッド def destroy helo = Helo.find(params['id']) helo.destroy redirect_to '/helos' end ※routes.rbに追記するメソッド match 'helos/' => 'helo#index' match 'helos/index' => 'helo#index' match 'helos/new' => 'helo#new' match 'helos/create' => 'helo#create' match 'helos/update' => 'helo#update' match 'helos/edit/:id' => 'helo#edit' match 'helos/destroy/:id' => 'helo#destroy' match 'helos/:id' => 'helo#show' match 'helos/index/:id' => 'helo#show' match 'helos/show/:id' => 'helo#show'
※関連コンテンツ