スポンサーリンク
リソースのCRUD機能
とりあえず、電話帳アプリが一通り機能する状態になりました。
これで完成と言っては怒られるレベルのアプリですが、一応、連絡先の新規作成、編集、削除という機能を備えています。
連絡先(member)というリソースについてのCRUD機能を実装したわけです。
CRUDというのは、以下の機能をまとめた呼び方です。
- Create (新規作成)
- Read (読み取り)
- Update (更新)
- Destroy (削除)
けど、実は今回作った電話帳アプリには、Read機能は実装していません。Readというのはある連絡先(リソース)1つを単に表示する機能です。
電話帳って1件だけ表示するような機能は別に必要ないし、特に説明するべき仕組みを含んでおらず解説が他のアクションとモロ被りの内容になってしまうので省略しました。
そのReadも含めて、ちょっとルーティングについて理解を深める為に、おさらいしましょう。
スポンサーリンク
Read処理について
思い出してもらいたいのですが、一番初めに、/config/routes.rbにて、以下のようにルーティングを定義しました。
1 2 3 4 | Rails.application.routes.draw do resources :members # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html end |
このresources :membersによって、membersリソースのCRUD処理を行う為のルーティングを生成しています。
その結果、出来たルーティング一覧が何度も見ているこれです。↓
1 2 3 4 5 6 7 8 9 | Prefix Verb URI Pattern Controller#Action members GET /members(.:format) members#index POST /members(.:format) members#create new_member GET /members/new(.:format) members#new edit_member GET /members/:id/edit(.:format) members#edit member GET /members/:id(.:format) members#show PATCH /members/:id(.:format) members#update PUT /members/:id(.:format) members#update DELETE /members/:id(.:format) members#destroy |
この6行目のが、(省略していた)ある連絡先を1件表示する、つまりReadに割り当てられたルーティングです。
ある1件の連絡先を表示させたかったら、membersコントローラーのshowアクションにて、その処理を定義すればいいというのが分かると思います。
ここまで読んでくれている方なら、自力で出来るはずなので、ぜひぜひshowアクションとshow.html.erbを自力で書いて見て下さい。
showアクションでリクエストパラメータからIDを取り出して、そのIDを持つMemberオブジェクトをモデルに用意させて、それをテンプレート変数@memberに格納して、show.html.erbというビューの中で@memberを参照してそのデータを表示するだけです。
リソースフルなルーティング
このように、あるリソースに対する「CRUD処理(4つ)」、及び、「一覧画面の表示」、「新規作成画面の表示」、「編集画面の表示」という7つのリクエストに対応するルーティングを一挙に用意してくれるのが、resourcesメソッドです。
1 2 3 4 5 6 7 8 | 一覧画面表示 GET /members(.:format) members#index Create処理 POST /members(.:format) members#create 新規作成画面表示 GET /members/new(.:format) members#new 編集画面表示 GET /members/:id/edit(.:format) members#edit Read処理 GET /members/:id(.:format) members#show Update処理 PATCH /members/:id(.:format) members#update Update処理 PUT /members/:id(.:format) members#update Destory処理 DELETE /members/:id(.:format) members#destroy |
↑8つあるのは、Update処理がPATCHメソッドでもPUTメソッドでもどちらでもできるようになっている為です。
このようなリソースを操作する為のルーティングのことを、リソースベースのルーティング、リソースフルなルーティングと言ったりします。