1
1

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】"::" を付与していなかったので"uninitialized constant ApplicationController"になった

Posted at

はじめに

Railsデビューして約一か月、わからないことがたくさんあるので初歩的なことも記事にしていきます。
今回の記事はエラー解消方法よりかは「"::"とはなんぞや」が趣旨になるかと思います。

原因

ブラウザ上でルートパスを開いてみると"uninitialized constant ApplicationController" のエラーが出ていました。

解決方法

載せるまでもないかもしれませんが。。修正前と後のコードになります。

修正前

application_controller.rb
class ApplicationController < ActionController
end 

修正後

application_controller.rb
class ApplicationController < ActionController::Base
end

ActionController::Baseと定義する必要があったようです。
下記のガイドに説明がありました。

ApplicationControllerを継承したすべてのコントローラは、最終的にActionController::Baseを継承します。ただし、API専用アプリケーションの場合のみ、ApplicationControllerはActionController::APIを継承します。

そもそも::とは?

::という記号は、Rubyで「名前空間」を表す記号です。

とはいえ、いまいちピンとこないので、AIにやさしく解説してもらいました。

例えば、「2年A組」という教室を探すとき、
2年という階層の中にA組という教室がある、というように場所を特定しますよね。
Rubyでも同じように、この時 ::は「その中にある」という意味になります
つまり、Api::V1::ApiControllerは「Apiの中のV1の中のApiController
という意味になります。
これは、同じ名前のコントローラーでも、場所(名前空間)が違えば共存できるようにするための仕組みなんです!

おわりに

ずっとTypeScript×React・Next.jsを書いていたので、異言語を学んでいる感がすごいです。。

参考

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?