0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Railsルーティング入門

Last updated at Posted at 2024-11-15

目次

はじめに

  1. ルーティングの基本
    1-1. 単一のルーティング設定
    1-2. リソースベースのルーティング
    1-3. リソースベースのルーティングに関するオプション
  2. ルーティングの応用
    2-1. ネストされたリソース
    2-2. 名前付きルート
  3. カスタムルーティング
    3-1. メンバーとコレクション
    3-2. コントローラーのアクション指定
  4. ルーティングとSEO対策
    4-1. フレンドリーURL
    4-2. リダイレクト
  5. 実践例:Railsアプリケーションでのルーティング設計
    5-1. 認証機能のルーティング
    5-2. APIのルーティング
    5-3. 管理画面のルーティング

まとめ

はじめに

本記事では、Railsルーティングの基本から応用テクニックまでを網羅的に解説いたします。

1. ルーティングの基本

Railsでは、config/routes.rbファイルにルーティング設定を行います。このファイルは、アプリケーションへのHTTPリクエストをどのコントローラーに振り分けるかを決定します。

1-1. 単一のルーティング設定

get 'articles', to: 'articles#index'

上記のコードは、GET /articlesのリクエストをArticlesControllerのindexアクションにルーティングします。

1-2. リソースベースのルーティング

Railsでは、resourcesを用いることで、RESTfulなルーティングを簡単に定義できます。

resources :articles

これにより、以下の7つのルートが自動的に生成されます。

  • index(一覧表示)

  • show(詳細表示)

  • new(新規作成フォーム)

  • create(新規作成)

  • edit(編集フォーム)

  • update(更新)

  • destroy(削除)

1-3. リソースベースのルーティングに関するオプション

resources :articles, only: [:index, :show]
resources :articles, except: [:destroy]

onlyとexceptを使用して、必要なルートだけを生成することが可能です。

2. ルーティングの応用

2-1. ネストされたリソース

ネストされたリソースは、親リソースに関連するリクエストに使用します。

resources :articles do
  resources :comments
end

この設定により、/articles/:article_id/commentsのようなネストされたルートが生成されます。

2-2. 名前付きルート

特定のルートに名前をつけることで、パスヘルパーを活用できます。

get 'about', to: 'pages#about', as: 'about'

この設定により、about_pathやabout_urlというヘルパーが使用できるようになります。

3. カスタムルーティング

場合によっては、標準的なresourcesの設定だけでは不十分なことがあります。そんな時にはカスタムルーティングを活用します。

3-1. メンバーとコレクション

個別のリソースやコレクションに対してカスタムルーティングを追加できます。

resources :articles do
  member do
    get 'preview'
  end
  collection do
    get 'search'
  end
end

memberは特定のリソースに対するルートを、collectionは全体に対するルートを設定します。

3-2. コントローラーのアクション指定

異なるコントローラーやアクションにルーティングを振り分けることも可能です。

get 'dashboard', to: 'admin#dashboard'

4. ルーティングとSEO対策

RailsのルーティングはSEO対策にも影響を与えます。適切なURL設計は、検索エンジンのインデックスに好影響を与えるため、意識して設計する必要があります。

4-1. フレンドリーURL

意味のあるURLを設定することで、ユーザーにとっても分かりやすくなります。

get 'products/:id/:name', to: 'products#show'

4-2. リダイレクト

旧URLから新URLにリダイレクトすることで、SEO効果を維持できます。

get 'old_path', to: redirect('/new_path')

5. 実践例:Railsアプリケーションでのルーティング設計

5-1. 認証機能のルーティング

devise_for :users

Deviseを使った認証機能のルーティング設定はシンプルです。

5-2. APIのルーティング

API開発では、名前空間(namespace)を利用すると便利です。

namespace :api do
  namespace :v1 do
    resources :products
  end
end

5-3. 管理画面のルーティング

namespace :admin do
  resources :dashboard, only: [:index]
end

管理者用のパスを分けることで、セキュリティと整理が向上します。

まとめ

用途 コード例
単一ルート get 'articles', to: 'articles#index’
リソースルート resources :articles
ネストされたリソース resources :articles do
    resources :comments
end
名前付きルート get 'about', to: 'pages#about', as: 'about’
カスタムメンバーアクション member do
    get 'preview'
end
APIルーティング namespace :api do
    resources :products
end
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?