【问题标题】:Devise: Allow admins to edit other users - Rails设计:允许管理员编辑其他用户 - Rails
【发布时间】:2011-04-07 08:34:12
【问题描述】:

我正在尝试允许管理员用户在 Devise 中编辑其他用户,但是当我尝试访问其他用户的编辑页面(例如 /users/1/edit)时,我收到以下消息:

Unknown action

Could not find devise mapping for path "/users/1/edit"

似乎唯一可行的路径是 /users/edit,它显示了当前用户的编辑页面。

在我的路线文件中,我有:

devise_for :users, :controllers  => { :registrations => 'users' }
resources :users

有什么想法吗?谢谢!

【问题讨论】:

    标签: ruby-on-rails devise registration


    【解决方案1】:

    我也必须这样做,而且它目前还没有内置到设计中。由于最受欢迎的答案有一个死链接,我想我会在这里发布我的解决方案。

    您需要创建一个 UsersController 并自行构建表单和控制器,但是您还需要隔离设计设置的 UsersController。为此,在您的 routes.rb 文件中,将您的 devise_for :users 调用修改为

    devise_for :users, :path_prefix => 'd' # routes for devise modules on User
    
    resources :users # custom admin-type CRUD for users
    

    这会将您所有的默认设计处理路由更改为 /d/users/... 并让您拥有 /users/... 路径,让您以管理员身份管理用户。

    Devise 还解决了这个问题in their wiki

    【讨论】:

      【解决方案2】:

      Devise 非常适合用户身份验证,但它内置了对管理用户的支持。所以你必须自己构建它。

      这是an example 的操作方法。该示例已有几个月的历史,但它应该为您指明正确的方向。

      【讨论】:

      • 非常感谢,Dty——这看起来会奏效。很高兴在第二天左右尝试并选择您的答案何时/如果它这样做!再次感谢。
      【解决方案3】:

      我已经完成了你想做的事情,而且你的路线看起来不错。

      您还需要创建一个 UsersController 来处理您想要对用户执行的所有 CRUD 操作。这与设计是分开的。

      当您的 UsersController 存在时,如果 current_user 不是管理员,您只能通过重定向(可能在之前的过滤器中)允许管理员用户访问特定操作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-09
        相关资源
        最近更新 更多