【问题标题】:Rails Namespace - Calling Model From Second ControllerRails 命名空间 - 从第二个控制器调用模型
【发布时间】:2013-02-28 06:54:05
【问题描述】:

我目前正在使用 Devise 进行用户身份验证,我想实现一个后端管理员来控制在管理面板中创建用户。

我已经生成了一个管理控制器,并且我已经为我的路由添加了一个命名空间。

-> routes.rb

namespace :admin do
  resources :users
end

当我 rake 路线时,我得到以下信息

         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,但没有取得多大成功。非常感谢!

【问题讨论】:

    标签: ruby-on-rails ruby namespaces


    【解决方案1】:

    这是命名空间控制器的典型设置(注意继承):

    # 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 以仅授权管理员用户,它将在从基本控制器继承的类的任何方法之前调用。

    【讨论】:

    • 非常感谢。我正在测试你的代码,我走神了,忘了谢谢你,呵呵。
    • 我还有一个问题!现在,当我转到 url /admin/users/new 时,它指向用户控制器内的新功能。我尝试重新启动服务器无济于事。唔。有什么想法吗?
    猜你喜欢
    • 2012-07-08
    • 1970-01-01
    • 2014-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2010-10-28
    • 2012-09-10
    相关资源
    最近更新 更多