我目前正在使用Devise进行用户身份验证,我希望实现一个后端管理员来控制管理面板中用户的创建。
我已经生成了一个管理控制器,并且我已经为我的路由添加了命名空间。
-> routes.rb
namespace :admin do
resources :users
end
当我耙路线时,我得到以下
admin_users GET /admin/users(.:format) admin/users#index
POST /admin/users(.:format) admin/users#create
new_admin_user GET /admin/users/new(.:format) admin/users#new
edit_admin_user GET /admin/users/:id/edit(.:format) admin/users#edit
admin_user GET /admin/users/:id(.:format) admin/users#show
PUT /admin/users/:id(.:format) admin/users#update
DELETE /admin/users/:id(.:format) admin/users#destroy
我们想要的是什么?现在我的问题是,管理控制器中函数的命名约定是什么?
如何命名我的功能,使它们对应于以下路径?我将这些功能放在用户控制器或管理员?
中我收到路由错误
uninitialized constant Admin
我认为我还没有掌握路由。任何额外的资源也将非常感激。
我一直在关注http://guides.rubyonrails.org/routing.html#controller-namespaces-and-routing并没有取得多大成功。非常感谢!
答案 0 :(得分:3)
以下是命名空间控制器的典型设置(请注意继承):
# app/controllers/admin/base_controller.rb:
class Admin::BaseController < ApplicationController
end
# app/controllers/admin/users_controller.rb:
class Admin::UsersController < Admin::BaseController
# here, you can define all of the methods shown by 'rake routes':
def index
# ...
end
def show
# ...
end
# etc...
end
Admin::BaseController
为admin命名空间提供了一个很好的顶级类,类似于ApplicationController
与其他控制器的关系。您可以在此处抛出before_filter
以仅授权管理员用户,这将在从基本控制器继承的类中的任何方法之前调用。