2011-04-07 128 views
17

我試圖允許管理員用戶在Devise中編輯其他用戶,但是當我嘗試訪問另一個用戶的編輯頁面時(例如/ users/1/edit) ,我得到以下信息:設計:允許管理員編輯其他用戶 - Rails

Unknown action 

Could not find devise mapping for path "https://stackoverflow.com/users/1/edit" 

,似乎工作的唯一路徑是/用戶/編輯,其中顯示了當前用戶的編輯頁面。

在我的路線文件我有:

devise_for :users, :controllers => { :registrations => 'users' } 
resources :users 

任何想法?謝謝!

回答

1

我已經完成了你想要做的事情,並且你的路線看起來不錯。

您還需要創建一個UsersController來處理您想要在用戶上執行的所有CRUD操作。這與Devise分開。

當您的UsersController在那裏時,如果current_user不是管理員,您只能通過重定向(可能在過濾器之前)允許管理員用戶訪問特定操作。

6

設計非常適合用戶認證但它中內置了支持管理用戶。所以你必須自己構建。如何做到這一點an example。這個例子有幾個月的歷史,但它應該指向正確的方向。

+0

非常感謝,Dty - 這看起來像它會工作。興奮在第二天左右嘗試它,並選擇你的答案時/如果它!再次感謝。 – 2011-04-09 04:41:50

+0

曾經有此工作? – ZMorek 2011-12-08 05:06:55

19

我不得不這樣做,它目前還沒有內置到設計中。由於最有幫助的答案有一個死鏈接,我想我會在這裏發佈我的解決方案。

您需要創建一個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 /用戶/ ...讓你有/用戶/ .. 。讓您以管理員身份管理用戶的路徑。

設計也解決這個in their wiki

相關問題