プログラミング初心者の勉強メモ。

あくまでメモなので、自分が忘れそうなことだけちょこちょこ書いてます。

uninitialized constant UserControllerとは

Railsで原因探しに苦労したエラー

ある日Railsをしていたらこんなエラーが。

f:id:over54:20200620044608p:plain

日本語翻訳は

「Routingのエラー」

「初期化されていない定数UserController」

とのこと…意味不明です。

調べていくと、「Routerで指示出してるUserControllerってもんが無いんだけど」とツッコミを受けている状態のようです。

エラー原因は?

このエラーの原因で1番多いのがRailsのルール破りだそうです。

概要を話すと、

  • コントローラー、テーブルの命名は複数形
  • モデルの命名は単数形

でなければいけないというルールがあります。もし上記のルール通り命名せず作成してしまった場合(コントローラー名を単数形で書いてしまった等)は再度作り直して、表示できるようにしましょう。

(詳細はこちら↓)

【Rails】uninitialized constant UsersController というエラーが出たときの対処法 | FREE SWORDER

ちなみに僕の場合は、コントローラー等の作成時の記述ルールは問題ありませんでしたが、routesのところで以下のように表記していました。

f:id:over54:20200620180145p:plain

エラー原因は5行目の部分。

get "signup" => "user#new"

だと、「Usercontrollerを呼び出す」という指示になってしまいます。

先程も記載したようにRailsではコントローラーの命名は複数形なので、

get "signup" => "users#new"

としてあげないといけません。

f:id:over54:20200620214907p:plain

この部分を修正したことで無事エラーが消え、ブラウザが表示されました。

このエラーが出た際は命名ミス・記述ミスを疑いましょう。