Ruby on rails を学習中の方の参考にしてもらえたら嬉しいです。
アプリケーションを作成している時に出てくるエラーとその解決方法について掲載します。少しでも参考にしていただけると幸いです。
今回のエラーはこちらです▼
uninitialized constant TimelinesController
Object.const _get(camel_cased_word)
というエラーの解決方法をお話しします。
先に結論を話します
この手のエラーはコントローラーが無いか、読み込まれていないために起こるエラーです。controllerを作成してルーティングを作成していくとエラーが直ります。
では直していきましょう。
エラーまでの過程を説明
今回は下の画像のようにフォロータイムラインというタブを押すと表示されるタイムラインが切り替わる仕様にしています。このタイムラインはログインしていないと見れないような仕様にしており、表示させる場合はログインを促す画面に遷移させます。
今回はとりあえず、コントローラーを作っていきましょう。
エラーの見つけ方
▼まずはエラーを解読していきます。
例によってChatGPTで解説してもらいます。
そして、ターミナルにcontroller作成のための雛形のコマンドもChatGPTに出してもらいました。
ターミナルで以下を実行します。
rails generate controller Timelines index show new edit create update destroy
というコマンドを打ちます。正確にはshowメソッドしか使わないので後で消しました。
controllerの作成が成功するとこんなターミナルの画面が出てきます。これでオッケー。
新たなエラーが続けて発生!!スウィープします!
controllerを作成してルーティングを定義してあげて、ブラウザを読み込むとさらにエラーが出てきました。こちらも一緒にsweep(掃除)しましょう!!
エラー画面のスクショを忘れたのでChatGPTに入力された文字で解説します。
▼以下の画像のエラーが出現
118n::Invalid Locale at /unauthenticated ja is not a valid locale
このようなエラーが出ましたので合わせて解決していきます。
1,ロケールファイルの存在:まず、日本語のロケールファイル(通常は
config/locales/Ja.yml)が存在し、適切な形式で書かれていることを確認してください。
このように書いてあったのでymlファイルを直します。
修正箇所は下の画像の通りのファイルです。
ローケルズの下層のファイルには日本語表記にするための指示書みたいなものが書いてあります。
おそらく! devise.ja.yml
というファイルを追加すれば118n::Invalid Locale at /unauthenticated ja is not a valid locale
というエラーは直ると思います。
そしてブラウザを再読み込みすると元のページに戻ってきてきます。
そして、フォロータイムラインをクリックすると
ログインを求めるページに遷移します。
ログインをさせるためのページ遷移が起こる理由は今回のエラー解決とは関係ないところのコードが動作しているためです。
エラーを解決すればコントローラーが正しく動いてhtmlを正しく描画してくれます。
最後に
ということで、今回はcontrollerの作成に関わるエラーを解決しました。
コマンドを正確に打つ自信がない時には雛形をChatGPTに出してもらうと楽で良いですよ。
いかがでしたでしょうか?
他にも記事を発信していきますので、私の QiitaやTwitterをフォローしていただけると嬉しいです。
個別の質問もぜひ歓迎します。
私自身、初学者ではありますが、1歩先を行くものとして回答できたらと思います。
それでは。