カテゴリ: Rails 更新日: 2026/02/24

Railsのdefaultsを使いこなそう!locale・format・ページング初期値をルーティングで設定する方法

defaults の使い方:locale・format・ページング初期値を設定する
defaults の使い方:locale・format・ページング初期値を設定する

先生と生徒の会話形式で理解しよう

生徒

「Railsのルーティングで、defaultsっていうのを見かけました。これは何に使うんですか?」

先生

「defaultsは、ルーティングに初期値を指定するための機能だよ。たとえば、言語(locale)やデータの形式(format)、ページ数なんかを決めておけるんだ。」

生徒

「初期値ってことは、何も指定しなかったときに自動で使われるってことですか?」

先生

「その通り!じゃあ、defaultsの基本的な使い方から順番に見ていこうか。」

1. defaultsとは?

1. defaultsとは?
1. defaultsとは?

defaults(デフォルツ)とは、Ruby on Railsのルーティングで パラメータの初期値をあらかじめ決めておくための仕組みです。 URLに値が書かれていない場合でも、Rails側で「この値を使う」と自動的に補ってくれます。

たとえば、言語を表すlocale、レスポンス形式のformat、 ページ番号を表すpageなどは、毎回URLに書かなくても 初期値が決まっていれば同じ動きをしてくれます。 これにより、URLが長くなりすぎるのを防げます。


# defaultsを使ったシンプルな例
get '/sample', to: 'samples#index', defaults: { page: 1 }

上の例では、/sampleにアクセスしたとき、 URLに?page=1と書かれていなくても、 params[:page]には自動的に1が入ります。 「指定がなければこの値」という考え方なので、初心者でも理解しやすいのが特徴です。

defaultsを使うことで、動作のブレを防ぎつつ、読みやすいURL設計ができるようになります。 まずは「ルーティングで初期値を決められる仕組み」と覚えておくと十分です。

2. locale(言語)の初期値を設定する

2. locale(言語)の初期値を設定する
2. locale(言語)の初期値を設定する

多言語対応しているRailsアプリケーションでは、 どの言語で画面を表示するか(locale)を切り替える仕組みがよく使われます。 URLに言語情報を含める方法もありますが、毎回指定するのは少し手間になります。

そこで役立つのがdefaultsです。 あらかじめ初期の言語を決めておけば、URLに何も書かれていなくても、 Railsが自動的にその言語を使って画面を表示してくれます。


# 日本語を初期言語に設定する例
get '/about', to: 'pages#about', defaults: { locale: 'ja' }

この設定では、/aboutにアクセスした時点で params[:locale]にはjaが入ります。 そのため、URLに?locale=jaを付けなくても、 最初から日本語表示になるのがポイントです。

「特に指定がなければ日本語にしたい」といったケースでは、 defaultsを使うだけでシンプルに実現できます。 初心者の方は「言語の初期設定をルーティングで決められる」と覚えておくと理解しやすいでしょう。

3. format(形式)をJSONなどに固定する

3. format(形式)をJSONなどに固定する
3. format(形式)をJSONなどに固定する

formatとは、Railsがどの形式でデータを返すかを決めるためのパラメータです。 普段ブラウザで見る画面はHTML形式ですが、APIとして使う場合はJSON形式がよく利用されます。 formatを意識することで、「人が見る画面」か「プログラムが使うデータ」かを明確に分けられます。

API専用のURLを作る場合、毎回.jsonを付けるのは少し面倒です。 そこでdefaultsを使えば、URLがシンプルなまま、 最初からJSON形式で返すルートを作ることができます。


# JSON形式で返すAPI用ルートの例
get '/users/:id', to: 'users#show', defaults: { format: 'json' }

この設定をしておくと、/users/1のようにアクセスするだけで、 Railsは自動的に「JSONで返すルートだ」と判断します。 URLに.jsonを付けなくても良いため、APIのURLがすっきりします。

初心者の方は、「formatは返すデータの形を決めるもの」と考えると分かりやすいでしょう。 defaultsで形式を固定しておくと、API用ルーティングを安全かつ分かりやすく整理できます。

4. ページング(pagination)の初期ページを設定する

4. ページング(pagination)の初期ページを設定する
4. ページング(pagination)の初期ページを設定する

ページング(pagination)とは、たくさんのデータを一度に表示せず、 複数のページに分けて見せるための仕組みです。 商品一覧や記事一覧など、件数が多くなりがちな画面でよく使われます。

その際、「最初にどのページを表示するか」を決めておかないと、 params[:page]が空になり、処理が分かりにくくなることがあります。 そこでdefaultsを使って、初期ページをあらかじめ指定しておくと便利です。


# 一覧ページの初期ページを1に設定する例
get '/products', to: 'products#index', defaults: { page: 1 }

この設定をしておくと、/productsにアクセスした時点で params[:page]には自動的に1が入ります。 URLに?page=1を付けなくても、常に1ページ目として扱われるのがポイントです。

初心者の方は、「ページ番号が省略されたら1ページ目にする」と考えると分かりやすいでしょう。 defaultsを使えば、ページング処理を安定して書けるようになります。

5. namespaceやscopeと組み合わせて使う

5. namespaceやscopeと組み合わせて使う
5. namespaceやscopeと組み合わせて使う

defaultsは、1つのルートだけでなく、namespacescopeのように 「ルーティングをまとめる箱」に対しても設定できます。 まとめて指定しておくと、その配下のルートすべてに同じ初期値が反映されるため、 管理画面(admin)など、共通ルールがある場所で特に役立ちます。

たとえば管理画面では「日本語で表示する」「HTMLで返す」といった前提が多いので、 ルートごとに毎回書くより、最初にまとめて決めてしまった方が見通しが良くなります。


# admin配下のルートにまとめて初期値を付ける例
namespace :admin, defaults: { locale: 'ja', format: 'html' } do
  resources :users
end

このようにすると、/admin/usersにアクセスしたとき、 URLに?locale=ja.htmlを付けなくても、 初期状態で日本語(ja)・HTMLとして扱われるようになります。 「このグループはこの設定で動く」と決められるので、ルーティングの書き間違いも減らせます。


# scopeでも同じ考え方でまとめられます(URLだけ/adminにしたい場合など)
scope '/admin', defaults: { locale: 'ja' } do
  resources :users, controller: 'admin/users'
end

まずは「個別に付けるだけでなく、グループ単位で初期値を統一できる」と覚えておくと、 ルーティング設計がぐっと楽になります。

6. defaultsを使うときの注意点

6. defaultsを使うときの注意点
6. defaultsを使うときの注意点

便利なdefaultsですが、注意すべきポイントもあります。

  • 明示的なパラメータ(URLに付いている値)があれば、そちらが優先されます
  • 複数のdefaultsを指定するときは、ハッシュ形式でまとめます
  • 誤った初期値を入れると、正しくルーティングされなくなる可能性があります

特にformatは、コントローラ側でrespond_toが適切に書かれている必要があるので、合わせて確認しましょう。

7. よく使うdefaultsのパターン一覧

7. よく使うdefaultsのパターン一覧
7. よく使うdefaultsのパターン一覧

ここでは、Railsのルーティングでよく使われるdefaultsのパターンを表にまとめてみました。

使用例 意味
defaults: { locale: 'ja' } 日本語を初期言語に設定
defaults: { format: 'json' } レスポンスをJSON形式に
defaults: { page: 1 } ページングの初期ページを1に
defaults: { sort: 'new' } 並び順を「新着」に初期化

このようにdefaultsを活用することで、URLがシンプルになり、意図した動作を安定して実現できます

関連記事:
カテゴリの一覧へ
新着記事
New1
Ruby
“すべてはオブジェクト”を体感!初心者向けRubyのオブジェクト指向入門【irbで学ぶ】
New2
Ruby
Rubyの標準入出力を完全ガイド!puts・print・pの違いとデバッグ活用法
New3
Ruby
Gemとは?RubyGemsとBundlerを初心者向けに完全解説!依存関係管理も図解でわかりやすく理解
New4
Ruby
Rubyの文字エンコーディング入門!UTF-8・マジックコメント・外部/内部エンコーディングを完全解説
人気記事
No.1
Java&Spring記事人気No1
Ruby
Rubyのreduceとinject入門!合計計算や集計を初心者向けに分かりやすく解説
No.2
Java&Spring記事人気No2
Ruby
Rubyの文字列エンコーディング完全ガイド!Encoding・force_encoding・encodeを初心者向け解説
No.3
Java&Spring記事人気No3
Ruby
Rubyの始め方ガイド:インストールから最初のHello Worldまで(Windows/Mac/Linux)
No.4
Java&Spring記事人気No4
データベース
PostgreSQLのWHERE句を徹底解説!初心者でもわかるSQLデータ抽出の基本
No.5
Java&Spring記事人気No5
Ruby
Rubyのfind/detect/find_indexを徹底解説!目的のデータを素早く探す方法
No.6
Java&Spring記事人気No6
Ruby
Rubyで比較演算子を完全解説!==・===・<=>・eql? の使い分け
No.7
Java&Spring記事人気No7
Ruby
Rubyのselect/reject/filterの使い方を完全解説!初心者向けの条件抽出レシピ
No.8
Java&Spring記事人気No8
データベース
PostgreSQLで順位付け!ROW_NUMBER関数の使い方を初心者向けに徹底解説