2012-08-27 72 views
2

我用設計爲我的應用程序進行認證,並且一切正常,除了其被檢測爲unauthentication失敗的設計登出消息:的Rails +設計:錯誤登出消息

en.devise.failure.unauthenticated: " You need to sign in or sign up before continuing "

我的意思是我註銷時出現此消息,而不是「成功註銷」消息。

也許我錯誤地將我的Devise系統人格化了。下面是我所做的personnalisations:

1 /我用我自己的會話控制器來替代默認設計會話控制器。我唯一的目標是選擇一個特殊的訪問(登錄/註冊)佈局:

class SessionsController < Devise::SessionsController 

    layout 'access' 

end 

沒有更多的代碼。我只想使用位於views/layouts/access.html.haml的特殊登錄/註冊設計進行渲染。

當然,我說這個我routes.rb文件:

devise_for :users, :controller => { :sessions => 'sessions' } 

2 /我選用的設計(法國)另一種語言,所以我下載devise.fr.ymlconfig/locales/文件夾中粘貼它,並在config/application.rb設置config.i18n.default_locale = :fr文件

所有其他設計動作的消息是正確的。只有「退出」有問題。任何想法?

在此先感謝。

+0

你能告訴我的註銷鏈接的代碼? –

+0

我用'的link_to「退出」,destroy_user_session_path,:方法=>「destroy''產生與'HREF鏈接=本地主機:3000 /用戶/ sign_out' – htaidirt

回答

6

看起來有一種方法來處理自定義佈局色器件沒有繼承會話控制器。看看這個文檔:

https://github.com/plataformatec/devise/wiki/How-To:-Create-custom-layouts

編輯

將用戶重定向回到登錄頁面後,他們登出添加到您的應用程序控制器:

def after_sign_out_path_for(resource_or_scope) 
    sign_ins_path 
end 
+0

謝謝湯姆的回答和鏈接。我改變了代碼不覆蓋Devise控制器,但我仍然有同樣的問題...即使我回到英語! – htaidirt

+2

也許發生的事情是,退出後的重定向將進入受限制的控制器操作。默認情況下,Devise重定向到root_path。在該控制器中是否有'before_filter:restrict_user'? –

+1

確實!我的根路徑是公司儀表板,其中包含'before_filter:restrict_user',以防用戶未登錄或會話過期。如何更改:根路徑將其設置爲登錄頁面? – htaidirt

0

Devise使用http DELETE請求來註銷請求。確保您註銷此鏈接。 <%= link_to "Sign out", destroy_user_session_path, :method => :delete %>

+0

感謝路易斯,但我仍然有同樣的錯誤註銷的消息。我將'destroy'方法(如我的評論中所寫)更改爲'delete',但沒有好消息! – htaidirt