次のようなサブディレクトリに分割されたコントローラーがいくつかあります。
app/dept1/user_controller/action
コントローラーでこの構成を使用すると、次のようになります。
class Dept1::UserController < ApplicationController
end
Rails 2 では、これだけで十分で、アプリケーションは問題なく自動ルーティングできました。
しかし、Rails 3 では、いくつかのルーティング構成を行う必要があるようです。名前空間を使用してみました:
namespace :dept1 do
resources :user
end
このページは問題なく表示されます:
app/dept1/user_controller/index
しかし、app/dept1/user_controller/report は次のエラーを返します。
"ActionController::RoutingError (No route matches [POST] "/dept1/user/report")"
他に何を設定する必要がありますか?
アップデート:
これをルートに入れると、機能します:
namespace :dept1 do
resources :user do
collection do
get :report
post :report
end
end
end
各アクションをハードコーディングせずにこれを行う方法はありますか?
その他の更新:
ルートが正しく機能するように修正するために私がしたことは次のとおりです。次の順序である必要があります。
match ':controller(/:action(/:id))', :controller => /dept1\/[^\/]+/
match ':controller(/:action(/:id(.:format)))'