Railsのエラー『RoutingError: uninitialized constant XController』の解決方法
- 作成日 2025.07.28
- rails
Railsで『RoutingError: uninitialized constant XController』というエラーが発生することがあります。このエラーは、ルーティングで指定されたコントローラーが見つからない場合に発生します。発生条件や解決方法を詳しく見ていきます。
エラーの発生条件
このエラーは、以下のような状況で発生します:
- コントローラーのクラス名が正しく定義されていない
- コントローラーファイルの名前が適切でない
- ルーティングの設定ミス
- 名前空間の誤り
- オートロードの問題
エラーメッセージの例
以下のようなエラーメッセージが出力されることがあります:
ActionController::RoutingError (uninitialized constant UsersController)これは、`UsersController` が正しく認識されていないために発生しています。
コントローラーのクラス名のミス
コントローラーのクラス名が正しく定義されていない場合、エラーが発生します。例えば、`users_controller.rb` 内で以下のように定義されているとエラーになります:
class UserController < ApplicationController
endこの場合、ファイル名とクラス名が一致していません。修正するには、以下のようにクラス名を `UsersController` に変更します:
class UsersController < ApplicationController
endコントローラーファイル名の誤り
ファイル名がクラス名と一致しない場合、エラーになります。
例えば、`user_controller.rb` というファイル名で、クラス名が `UsersController` になっていると認識されません。
正しくするには、ファイル名を `users_controller.rb` に変更してください。
ルーティングの設定ミス
ルーティングの設定が正しくない場合、エラーが発生します。
例えば、`routes.rb` に以下のように記述しているとします:
get 'users', to: 'user#index'しかし、コントローラーのクラス名が `UsersController` である場合、正しくは以下のようにする必要があります:
get 'users', to: 'users#index'名前空間の誤り
モジュールを使って名前空間を指定している場合、適切に指定しないとエラーになります。
例えば、以下のように `Admin::UsersController` を定義しているとします:
module Admin
class UsersController < ApplicationController
end
endこの場合、ルーティングを正しく設定しないとエラーになります:
get 'admin/users', to: 'admin/users#index'オートロードの問題
Rails 7 では `zeitwerk` によるオートロードがデフォルトになっています。以下のような場合、オートロードが正しく機能せず、エラーになります。
- ファイル名とクラス名が一致していない
- モジュールの定義が適切でない
- キャッシュが古い
キャッシュの問題を解決するには、以下のコマンドを実行してください:
rails tmp:cache:clearまとめ
『RoutingError: uninitialized constant XController』が発生する原因と対策をまとめると、以下の点を確認する必要があります:
- コントローラーのクラス名とファイル名が一致しているか
- ルーティングが正しく設定されているか
- 名前空間の指定が適切か
- オートロードの問題がないか
上記のポイントをチェックすることで、エラーを解決できます。
-
前の記事
Error: Cannot find module ‘express’の解決方法 2025.07.26
-
次の記事
Rubyのエラー『ArgumentError: wrong number of arguments (given X, expected Y)』の解決方法 2025.07.28
コメントを書く