2015-03-13 58 views
0

我在rails 4.2項目上創建了一個超級簡單的「admin」部分。我用過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.each做一個陣營變量|用戶| (@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" 

我已經嘗試了幾種不同的事情,但最後總是回到這個錯誤。任何幫助如何解決它將不勝感激!

回答

0

你可能會用這種錯誤的方式去做。而不是調用註冊,而是使用更新操作創建自己的用戶控制器,並通過用戶#更新來更新它。

的divise控制器是針對註冊行爲等

+0

我想也指出,這使得它更容易,以確保用戶在更新卷確實是一個管理以及使用'before_filter' – fugufish 2015-03-13 14:29:32

+0

啊!這是完全合理的。謝謝。 – zkirchin 2015-03-13 15:05:41