0

我目前正在使用 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但没有取得多大成功。非常感谢!

4

1 回答 1

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 命名空间提供了一个很好的Admin::BaseController顶级类,类似于 与ApplicationController其余控制器的关系。您可以在这里抛出一个before_filter仅授权管理员用户,它将在从基本控制器继承的类的任何方法之前调用。

于 2013-02-28T07:09:08.533 回答