Railsのcontrollerの配置とURL

ruby1.8.6と1.8.5で微妙に違うのでハマった。

app/controllers/demo_controller.rb

app/controllers/demo/test_controller.rb

app/controllers/demo/hoge_controller.rb

で、クラスが、

class DemoController < …

class Demo::TestController <…

class Demo::HogeController <…

この場合、期待されるのが、

http://localhost/demo/show/1

http://localhost/demo/test/new

http://localhost/demo/test/list

http://localhost/demo/hoge/edit/20

こんな感じなんだけど、1.8.5の場合これがうまくいかない。

demoコントローラーのtestアクションでnewってidが入ってしまうのです。

demo/testコントローラーのnewアクションを期待してたのに。。。

1.8.6だと期待通り。

とりあえずdemo_controller.rbの名前をdemos_controller.rbとかにかえるかdemoディレクトリをdmとか変えれば大丈夫。

class DemosController < …..

class Dm::TestController < …

いいのかな?

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中