我将一些控制器分离到子目录中,例如:
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)))'