ルーティングなどについて理解を深めるため、
コントローラのデフォルトの挙動を調べる。
hogeメソッドを含むTestコントローラをつくってみた。
$ ruby script/generate controller test hoge exists app/controllers/ exists app/helpers/ create app/views/test exists test/functional/ create app/controllers/test_controller.rb create test/functional/test_controller_test.rb create app/helpers/test_helper.rb create app/views/test/hoge.html.erb
config/routes.rbには変化なし。
最低限の記入をしてみて、/test/hogeにアクセスしてみた。
Routing Error No route matches "/test/hoge" with {:method=>:get}
つまりデフォルトではルーティングがきかないのか?
config/routes.rbに以下を追加してみる。
map.connect '/test/hoge', :controller =>'test', :action=>'hoge'
動いた。
No route mathesエラーだとroutes.rbの記載で修正できると。
いまつまづいてるのは、No method errorである。
ビューとひもづけられたはずのコントローラ内部のメソッドを
呼んでいない。
わかった。
class Hoge def foo ... def bar ... end end
endが抜けとる。
ちゃんとインデントしないとこういうことになるのか。。。