更新设计用户属性而不是当前用户
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 对其进行更新。
分割控制器特定于注册操作等
我正在为 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 对其进行更新。
分割控制器特定于注册操作等