🗺️

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
カスタムルート: membercollectionで追加ルート定義

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) ネストリソース(投稿 → コメント)