2010-10-24 21 views
1

我的應用程序有兩種UI狀態: - 簽署 - 已退出設計佈局。SignedIn和已退出resouces

我一直在使用下列內容來確定使用基於其是否應用程序/視圖/佈局用戶登入或退出Devise:

# Devise, way of using a different Layout for all the devise/non-signed in Views 
    layout :layout_by_resource 
    def layout_by_resource 
    if devise_controller? 
     "application_unauthorized" 
    else 
     "application" 
    end 
    end 

問題是一旦您登錄它使用錯誤的佈局?想法?

我只想用「application_unauthorized」如果它是設計&用戶沒有登錄。

+0

請提供更多的問題背景。我發現他們缺少它:( – 2010-10-24 03:38:29

+0

@ryan,對不起,剛剛更新。更好? – AnApprentice 2010-10-24 04:06:53

回答

5

其實你應該使用user_signed_in?方法來檢查用戶已登錄。我注意到,即使用戶當前未登錄,current_user?也可能返回true

因此,您的代碼如下所示:

layout :layout_by_resource 
def layout_by_resource 
    if user_signed_in? 
    "application" 
    else 
    "application_unauthorized" 
    end 
end 
+0

好男人謝謝! – AnApprentice 2010-10-26 03:26:11

+0

快速的問題,你在哪裏把代碼?在應用程序控制器? – Vasseurth 2011-07-11 07:52:30

4

個人而言,我會檢查使用if current_user?而不是devise_controller?

+0

同意。測試'devise_controller?'測試你是否在一個設計控制器,甚至不是有一個當前的用戶瑞恩的答案是正確的imho。 – nathanvda 2010-10-24 13:31:48