具有重复资源名称的命名空间

时间:2012-01-05 12:31:59

标签: ruby-on-rails ruby-on-rails-3 routing namespaces

我是rails的新手,并且正在尝试开发一个具有多种不同类型用户的系统。我正在尝试使用命名空间来区分这些区域,但我希望共享模型。我已经创建了一个用户对象,我希望能够从admin命名空间编辑它。我已经搭建了一个Admin :: UserController,并将路由定义为:

namespace :admin do
    resources :users
end

root :to => "home#index"

当我转到admin/users时,它显示正常,但点击“创建用户”会给我一个NoMethodError,说它无法找到路径users_path。搜索后我意识到我需要更新我的routes.rb到:

resources :users

namespace :admin do
    resources :users
end

root :to => "home#index"

现在我可以转到admin/users/new表单了,但是当我发布它时会尝试返回/users。我的两个问题是:1。我怎样才能做到这一点? 2.我是否正确地尝试以这种方式使用命名空间?

1 个答案:

答案 0 :(得分:2)

您为/admin/users/users生成了路由。如果您想使用Admin::UsersController,请使用admin_users_path,如果您希望在表单中使用UsersController,请使用users_path

如果您想知道生成的路由的名称是什么,我还建议您使用rake routes命令。