🗺️
RESTful Routes
resources 1行で7つのルート自動生成
Railsのルーティングは REST原則を完全にサポートします。resources :posts 1行でCRUDに必要な7つのルートが自動生成されます。
生成される7つのルート:
GET /posts → posts#index (一覧)
GET /posts/:id → posts#show (詳細)
GET /posts/new → posts#new (作成フォーム)
POST /posts → posts#create (作成処理)
GET /posts/:id/edit → posts#edit (編集フォーム)
PATCH /posts/:id → posts#update (更新処理)
DELETE /posts/:id → posts#destroy (削除処理)
ネストリソース: resources :posts do; resources :comments; endで/posts/1/comments
ネームスペース: namespace :admin do; resources :posts; endで/admin/posts
カスタムルート: memberとcollectionで追加ルート定義
rails routesコマンドで定義された全ルートを確認できます。
構造ダイアグラム
<code>resources :posts</code> 1行で生成される7つのルート:
GET
/posts
→
posts#index
一覧
GET
/posts/:id
→
posts#show
詳細
GET
/posts/new
→
posts#new
作成フォーム
POST
/posts
→
posts#create
作成処理
GET
/posts/:id/edit
→
posts#edit
編集フォーム
PATCH
/posts/:id
→
posts#update
更新処理
DELETE
/posts/:id
→
posts#destroy
削除処理
URL Helperも自動生成:
posts_path
post_path(@post)
new_post_path
edit_post_path(@post)
ポイント: <strong>HTTPメソッド + URLの組み合わせ</strong>で意味のあるRESTful APIを1行で生成
キーポイント
1
config/routes.rbにresources :postsを定義
2
rails routesで生成ルート確認(prefix、verb、URI、controller#action)
3
HTTPリクエストのMethod + PathでController#Actionを決定
4
only:/except:オプションで必要なルートだけ選択
5
member/collectionブロックでカスタムルート追加
6
namespace/scopeでURLとコントローラのネームスペース管理
メリット
- ✓ URL設計が直感的で予測可能
- ✓ 1行で7ルート生成 → 生産性
- ✓ HTTP Methodを活用した意味あるURL
- ✓ URL Helper自動生成(posts_path、post_pathなど)
デメリット
- ✗ RESTに合わないアクションは別途定義が必要
- ✗ 過度なネスティングはURLが長くなる
- ✗ リソースでないページ(about、contact)はgetで直接定義
- ✗ API vs HTMLルート分離が必要
ユースケース
CRUD機能実装
REST APIサーバー
管理者パネル(namespace :admin)
ネストリソース(投稿 → コメント)