Pebble Coding

ソフトウェアエンジニアによるIT技術、数学の備忘録

uninitialized constant SessionController

rails でこのエラーが起きたときはどこかのスペルが間違っていることを意味する。
SessionControllerを呼び出そうとしていることは分かるが、通常セッションコントローラーの名前は
SessionsControllerである。つまり、どこかで間違ってsessionsと書くべきところをsessionと書いているはずである。

railsの約束を忘れているとこの辺りのデバッグが全く進まないのでメモしておく。

rubyの文法ではクラス名は大文字でなければ定義できない。

以下はrailsの規約によるものである。
モデルのクラス名は単数形になる。
テーブル名はクラス名を複数にしたものになる。
コントローラクラス名は{モデルクラス名の複数形}Controllerとなる。
このファイル名は{モデルクラス名の複数形}_controller.rbとなる。
セッションコントローラクラス名はSessionsControllerとなる。

rake routesを実行した時に表示されるリストの右端をみてみると以下のようになっている。

      Prefix Verb   URI Pattern                       Controller#Action
sessions_new GET    /sessions/new(.:format)           sessions#new

Controller#Actionとなっている。
Controllerにsessionsと表示されているということはこの処理は
sessions_controller.rbファイル内にあるSessionControllerクラス内のでnewメソッドで処理されるという意味になる。
これはrailsの規約(railsの実装)から来るものである。