少しだけハマったのでメモ
Rails3のEngineでルーティングを設定すると、engineを利用する側のアプリケーションへ自動的にそのルーティングが設定されます。
その際、Engine側のroutes.rbで、
MyEngine::Engine.routes.draw do
get "hoge/index"
end
と設定し、以下のように利用する側のアプリケーションでマウントしたとします。
Rails.application.routes.draw do
mount MyEngine::Engine => "/my_engine"
end
こうすると、/my_engine/hoge/index
でアクセスできるのだろうと思っていましたが、実際のところは、
Routing Error
uninitialized constant HogeController
が発生してしまいました。
解決策としては、明示的にcontroller, actionを指定すること。
MyEngine::Engine.routes.draw do
get "hoge/index" => "hoge#index"
end
解決したけれどもなんとなく腑に落ちない。
もう少し調べる。