Ruby on Rails ver.5.2.5にて通販サイトの作成をするにあたり、namespaceとscope moduleの使い分けができておらず発生したエラー。
初心者ゆえの初歩的なミスですが、備忘録として記しておきます。
■エラー内容
devise にて管理者側と顧客側を定義し、namespaceによりcontrollerをそれぞれ[controllers/admin]と[controllers/public]に棲み分けて作成しました。
そしてrutes.erbを以下のように記載
各controllerにアクション名を定義し、いざサーバー起こしてページ確認しようと思ったら、、
Routing Error
Uninitialized Constant HomeController
というエラーが発生。
エラーの内容は、namespaceにて定義されているadmin側のルーティングは辿れるけど、それより前のルーティングは一体どこの階層のコントローラを呼んでんの?分からないよ?というエラーでした。
■解決方法
scope moduleでpublic側も設定してあげないといけなかったようです。
ここで使用した
scope module: 'public' do 〜 end
ですが、namespaceとは異なり、URLに/publicを追加せず、controller#actionにだけpublic/を追加することができるようです。
public側はURLに/publicを表示しないという仕様のため、namespaceで指定しなければいいのか〜と思っていたのですが、コントローラアクションはちゃんとpublicフォルダ内のコントローラを使うよ!と設定してあげないといけなかったんですね。
勉強になりました...。