2
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?

More than 1 year has passed since last update.

【Rails】routes.rbで出来る事あれこれ

Last updated at Posted at 2023-08-17

ど忘れ防止に、rails routesの備忘録

目次

Routesとは

RailsのRoutesは、アプリケーション内のURLとアクションを関連付けるための仕組みです。RESTful(「 REpresentational State Transfer 」の略)なルーティングを提供し、アクションへのリクエストを適切なコントローラーとアクションにルーティングします。

Routes.rbでできること

CRUD操作の設定

CRUD操作は、RailsのRoutesを使用して簡単に設定できます。以下は、postsリソースに対するCRUD操作の例です。

config.routes.rb
resources :posts

このコードによって、以下のようなURLが生成されます。

  • Create: POST /posts
  • Read: GET /posts/:id
  • Update: PUT /posts/:id
  • Delete: DELETE /posts/:id

カスタムルート

RESTfulなルート以外にも、カスタムのURLパターンとアクションを指定できます。
特定のアクションに対するカスタムルートの例は、以下の通りです。

config.routes.rb
get '/about', to: 'pages#about'

このコードによって、/aboutへのGETリクエストがPagesControllerのaboutアクションにルーティングされます。

リソース間の関連付け

リソース間の親子関係を表現するために、ルートをネストすることができます。
以下は、authorsとその下にあるbooksというリソースの関連付けの例です。

config.routes.rb
resources :authors do
  resources :books
end

このコードによって、以下のようなURLが生成されます。

  • 親: GET /authors/:author_id
  • 子の一覧: GET /authors/:author_id/books
  • 子の詳細: GET /authors/:author_id/books/:id

これらのコード例を使って、CRUD操作の設定、カスタムルートの作成、リソース間の関連付けを行うことができます。これにより、柔軟で効率的なルーティング設計を実現できます。

コツや裏技

名前付きルートの活用

名前付きルートを使用することで、URLを生成する際にコード内でエイリアスを使用できます。これにより、URLの変更に柔軟に対応できます。
以下は、名前付きルートの例です。

config.routes.rb
resources :posts
.haml
= link_to "詳細を見る", post_path(@post) 

オプション

Railsのroutesでは、リソースやカスタムルートを定義する際に、特定のオプションを指定することで挙動や設定をカスタマイズできます。これにより、より柔軟なルーティング設計が可能になります。

on: :collectionオプション

on: :collectionは、特定のリソース全体に関連するアクションを設定する際に使用します。
インスタンスに対するものではなく、リソース全体に適用されるアクションを定義します。例えば、全ての投稿を検索するためのアクションなどです。

config.routes.rb
resources :posts do
  collection do
    get 'search'
  end
end
onlyオプション

onlyは、特定のアクションのみを有効にする際に使用します。
これにより、不要なアクションを除外してルートを定義できます。

config.routes.rb
resources :posts, only: [:index, :show]
asオプション

asは、名前付きルートの名前をカスタマイズする際に使用します。
これにより、自分のプロジェクトに合ったわかりやすい名前を使用できます。

config.routes.rb
resources :posts, as: 'articles'

これらのオプションを活用することで、ルーティング設計をより柔軟にカスタマイズできます。

制約条件の活用

特定の条件を満たす場合にのみルートを有効化するために、制約条件を使用できます。
以下は、特定のサブドメインに対してルートを有効化する例です。

config.routes.rb
constraints(subdomain: 'api') do
  namespace :api do
    resources :posts
  end
end

これらのコツや裏技を活用することで、より柔軟で効率的なルーティング設計が可能になります。

最後に

この記事では、RailsのRoutesについて基本から応用まで解説しました。
適切なルーティング設計はアプリケーションの保守性や拡張性に影響を与える重要な要素です。ぜひこれらのコツやサンプルコードを活用して、効果的なルーティング設計を行ってくださいね!

2
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
2
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?