更新设计用户属性而不是当前用户

Updating Devise User Attributes Not As Current User

我正在为 rails 4.2 项目创建一个超级简单的 "admin" 部分。我用过 Devise 3.4.1。

我为每个用户创建了一个名为角色的属性,并希望 "admin" 用户能够更改其他用户的角色。我已经创建了一个表单,但是当我提交它时我得到了这个错误:

NoMethodError in Devise::RegistrationsController#update
undefined method `name' for nil:NilClass

Extracted source (around line #22):
20  # Proxy to devise map name
21 def resource_name
22  devise_mapping.name
23 end
24 alias :scope_name :resource_name

这是我的表单,user 是@user.each do |user| 的 bloc 变量(@user 是 User.all):

<%= form_for(user, url: update_role_path(user), html: { method: :put }) do |f| %>
    <%= f.select(:role, @roles.collect {|role| [role] }, {:include_blank => 'Please select an item'}) %>
    <%= f.submit "Change Role", class: "btn btn-primary" %>        
<% end %>

这是我的路线:

put '/admin' => 'devise/registrations#update', as: "update_role"

我尝试了几种不同的方法,但总是以这个错误告终。任何有关如何修复它的帮助将不胜感激!

你可能用错了方法。不要调用注册,而是使用更新操作创建您自己的用户控制器,然后通过 users#update 对其进行更新。

分割控制器特定于注册操作等