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