はじめに
Railsデビューして約一か月、わからないことがたくさんあるので初歩的なことも記事にしていきます。
今回の記事はエラー解消方法よりかは「"::"とはなんぞや」が趣旨になるかと思います。
原因
ブラウザ上でルートパスを開いてみると"uninitialized constant ApplicationController" のエラーが出ていました。
解決方法
載せるまでもないかもしれませんが。。修正前と後のコードになります。
修正前
class ApplicationController < ActionController
end
修正後
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を書いていたので、異言語を学んでいる感がすごいです。。
参考