【解決方法】uninitialized constant TimelinesController Object.const _get(camel_cased_word)とは？

Ruby on rails を学習中の方の参考にしてもらえたら嬉しいです。
アプリケーションを作成している時に出てくるエラーとその解決方法について掲載します。少しでも参考にしていただけると幸いです。

:::note info
今回のエラーはこちらです▼
uninitialized constant TimelinesController
Object.const _get(camel_cased_word)
:::

というエラーの解決方法をお話しします。

![スクリーンショット 2023-06-02 16.06.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356902/911bacd4-b560-c4e5-e04c-7499133ce41f.png)
上記のエラーを解決していきます。

## 先に結論を話します
この手のエラーはコントローラーが無いか、読み込まれていないために起こるエラーです。controllerを作成してルーティングを作成していくとエラーが直ります。
では直していきましょう。

## エラーまでの過程を説明
今回は下の画像のように**フォロータイムライン**というタブを押すと表示されるタイムラインが切り替わる仕様にしています。このタイムラインはログインしていないと見れないような仕様にしており、表示させる場合はログインを促す画面に遷移させます。
今回はとりあえず、コントローラーを作っていきましょう。
![スクリーンショット 2023-06-02 16.23.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356902/35ff77d7-c496-e5c5-c36a-b1368804b2d0.png)


## エラーの見つけ方
▼まずはエラーを解読していきます。
![スクリーンショット 2023-06-02 16.06.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356902/de437805-5e80-90e5-bacc-877d9ba13191.png)
例によってChatGPTで解説してもらいます。

そして、ターミナルにcontroller作成のための雛形のコマンドもChatGPTに出してもらいました。
ターミナルで以下を実行します。
```html:ターミナル
rails generate controller Timelines index show new edit create update destroy
```
というコマンドを打ちます。正確にはshowメソッドしか使わないので後で消しました。
![スクリーンショット 2023-06-02 16.11.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356902/c83f0b07-43d4-6fd0-ea95-1a64a03f93a2.png)
controllerの作成が成功するとこんなターミナルの画面が出てきます。これでオッケー。

## 新たなエラーが続けて発生！！スウィープします！

controllerを作成してルーティングを定義してあげて、ブラウザを読み込むとさらにエラーが出てきました。こちらも一緒にsweep（掃除）しましょう！！
エラー画面のスクショを忘れたのでChatGPTに入力された文字で解説します。
▼以下の画像のエラーが出現
![スクリーンショット 2023-06-02 16.14.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356902/d4eb0853-1a04-e919-55b2-def123a1aa49.png)
`118n::Invalid Locale at /unauthenticated ja is not a valid locale`このようなエラーが出ましたので合わせて解決していきます。

▼注目は以下のラインです
![スクリーンショット 2023-06-02 16.21.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356902/ca8a57e7-5664-8139-c5af-2396181d2865.png)

**1,ロケールファイルの存在：まず、日本語のロケールファイル（通常は
config/locales/Ja.yml）が存在し、適切な形式で書かれていることを確認してください。**
このように書いてあったのでymlファイルを直します。
修正箇所は下の画像の通りのファイルです。
![スクリーンショット 2023-06-02 16.22.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356902/4ad78bbc-767c-d945-f38e-4a73dcc04f73.png)
ローケルズの下層のファイルには日本語表記にするための指示書みたいなものが書いてあります。![スクリーンショット 2023-06-02 17.04.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356902/14ba110f-eb4c-a1f4-2800-957960cc63c3.png)
おそらく`! devise.ja.yml`というファイルを追加すれば`118n::Invalid Locale at /unauthenticated ja is not a valid locale`というエラーは直ると思います。

そしてブラウザを再読み込みすると元のページに戻ってきてきます。
![スクリーンショット 2023-06-02 16.23.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356902/8ee99dc1-cda5-2b1d-56a2-67069f1ec86f.png)
そして、**フォロータイムライン**をクリックすると
![スクリーンショット 2023-06-02 16.22.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356902/ff3641d4-da5b-bdf1-a19c-ebed2cea267b.png)
ログインを求めるページに遷移します。
ログインをさせるためのページ遷移が起こる理由は今回のエラー解決とは関係ないところのコードが動作しているためです。
エラーを解決すればコントローラーが正しく動いてhtmlを正しく描画してくれます。

## 最後に
ということで、今回はcontrollerの作成に関わるエラーを解決しました。
コマンドを正確に打つ自信がない時には雛形をChatGPTに出してもらうと楽で良いですよ。

いかがでしたでしょうか？
他にも記事を発信していきますので、私の QiitaやTwitterをフォローしていただけると嬉しいです。
個別の質問もぜひ歓迎します。
私自身、初学者ではありますが、1歩先を行くものとして回答できたらと思います。
それでは。