更新设备用户属性不是当前用户

时间:2015-03-13 14:16:52

标签: ruby-on-rails ruby devise

我正在创造一个超级简单的" admin"轨道4.2项目的部分。我使用过Devise 3.4.1。

我已经为每个用户创建了一个名为role的属性,并且想要" 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"

我已经尝试了几种不同的东西,但总是最终回到这个错误。任何有关如何解决它的帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

你可能会以错误的方式解决这个问题。不要打电话给注册,而是使用更新操作创建自己的用户控制器,并通过用户#news更新它。

divise控制器特定于注册操作等。