ルーティング(config/routes.rbの理解と設定)

Railsにおける**「ルーティング」は、クライアントからのリクエスト(URL)を適切なコントローラーのアクション**に結びつける重要な仕組みです。このルーティングの設定は、config/routes.rbファイルによって管理されます。


ルーティングの役割

MVCの「C(コントローラー)」において、ルーティングは次のような働きを担います:

  • ユーザーがアクセスしたURLとHTTPメソッド(GET, POSTなど)を解析し、

  • 対応するコントローラーとアクションに処理を振り分ける。


config/routes.rb の基本構文

ruby
Rails.application.routes.draw do # ルーティングの定義をここに記述 end

このブロックの中で、様々なルーティングを設定します。


よく使われるルーティングの記述

1. 単一ルートの定義

ruby
get 'articles/index'
  • GET /articles/index というURLにアクセスすると、

  • ArticlesControllerindexアクションが呼び出されます。


2. ルートパスの設定

ruby
root 'home#index'
  • アプリケーションのトップページ(/)にアクセスしたときに

  • HomeControllerindexアクションを呼び出す設定です。


3. RESTfulなルーティング(resources

ruby
resources :articles

これは、次のような7つのCRUDアクションに対応するルートを自動生成します:

HTTPメソッド パス アクション 用途
GET /articles index 一覧表示
GET /articles/:id show 詳細表示
GET /articles/new new 新規作成フォーム
POST /articles create 作成処理
GET /articles/:id/edit edit 編集フォーム
PATCH/PUT /articles/:id update 更新処理
DELETE /articles/:id destroy 削除処理

ルーティングにおけるオプションの指定

ruby
resources :articles, only: [:index, :show]
  • 特定のアクションだけにルーティングを限定したい場合に使用します。

ruby
get 'profile', to: 'users#show'
  • 任意のパス名(ここではprofile)を、任意のコントローラーとアクションに割り当てられます。


ネストされたリソース

ruby
resources :articles do resources :comments end
  • articlesの中にcommentsがネストされており、次のようなルーティングが生成されます:

    • /articles/:article_id/comments

    • /articles/:article_id/comments/:id

これは、「ある記事に紐づくコメント」を扱う場合に有効です。


名前付きルート(path helper)

ルーティングを定義すると、自動的にヘルパーメソッドが生成されます:

ruby
link_to '記事一覧', articles_path
  • articles_pathは、/articlesへのパスを表します。

  • 名前付きルートを使うことで、URL変更に強いコードが書けます。


まとめ

  • config/routes.rbは、すべてのリクエストの振り分けを司る重要ファイルです。

  • resourcesを活用すれば、RESTfulなルーティングを簡潔に記述できます。

  • root, get, post, patchなどを組み合わせて、柔軟なURL設計が可能です。

  • 適切にルーティングを設計することで、コントローラーのアクションとビューがスムーズに連携します。

必要に応じて、ルーティングを可読性よく構成することで、保守性の高いRailsアプリケーションが実現できます。

ChatGPT4o 生成日:2025/06/21