允许管理员编辑其他用户- Rails



我试图允许管理员用户在设计中编辑其他用户,但是当我试图访问另一个用户的编辑页面(例如/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

任何想法?谢谢!

我也必须这样做,而且目前还没有内置到设计中。因为被点赞最多的答案有一个死链接,我想我应该把我的解决方案贴在这里。

您需要创建一个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/…允许您以管理员身份管理用户的路径。

design在他们的wiki中也提到了这一点

对于用户身份验证来说非常好,但是并没有内置支持管理用户。所以你必须自己构建。

这里有一个如何做的例子。这个例子是几个月前的,但它应该为您指明了正确的方向。

我已经做了你想做的,你的路由看起来是正确的。

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

当你的UsersController在那里时,如果current_user不是admin,你只能允许admin用户通过重定向(可能在before过滤器中)访问特定的操作。

最新更新