読者です 読者をやめる 読者になる 読者になる

Pebble's Diary

プログラマーの作業メモ

uninitialized constant SessionController

rails

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の実装)から来るものである。