2015-08-15 137 views
2

用戶角色特定的網頁我有一個用戶三種可能的權限是在我的Rails應用程序,它們是User.is_adminUser.is_schoolUser.is_security。基於我的應用程序的性質,我需要爲每個用戶做一個單獨的主屏幕,這些用戶可以完成截然不同的事情,這是我工作的。無論我設置的權限如何,設置後,我所遇到的問題都與設備自動重定向到root_path後所有用戶的身份有關。設計重定向到基於登錄

我生成了Devise Sessions控制器到用戶名稱空間中,並且我已經將其覆蓋默認給我的控制器,但現在當我嘗試根據條件權限執行重定向時,我得到一個DoubleRenderError(顯而易見的原因是Devise在創建會話時將重定向到其他地方)。

我試過將它作爲after_action運行,甚至嘗試覆蓋after_sign_in_path_for方法,按照關於此問題Devise文檔的方向,但我仍然無法正常工作。任何幫助將不勝感激,謝謝!

+3

「我已經嘗試運行它作爲一個after_action,甚至試圖覆蓋after_sign_in_path_for方法,按的方向在此問題上設計文檔,但我仍然無法實現。「你需要發佈你的代碼,因爲這是如何從Devise獲得你想要的。請記住,我們沒有魔力。如果你希望得到幫助,你需要告訴我們你的嘗試。 – MarsAtomic

+0

你是否因爲添加了重定向而得到DoubleRenderError,而'after_sign_in_path_for(resource)'也會重定向?亞,可能是時間開始張貼一些代碼 – daslicious

回答

4

你可以做這樣的事情

class ApplicationController < ActionController::Base 
    def after_sign_in_path_for(resource) 
    if resource.role == 'admin' 
     admin_root_path 
    else 
     user_root_path 
    end 
    end 
end 

你可以閱讀更多有關此https://github.com/plataformatec/devise/wiki/How-To:-redirect-to-a-specific-page-on-successful-sign-in

+0

這很好,謝謝 – ZubatMan

+1

我很高興我能夠幫助 – MZaragoza

+1

不應該這樣,如果resource.role =='管理'? – rylanb