2011-04-03 55 views
0

我試圖在現有的Rails3項目中實現Devise。我已經創建了用戶表及其路線和模型。我能夠創建一個帳戶,並登錄,但如果我去/用戶/ SIGN_OUT那麼它拋出一個錯誤:RoR - 設計 - 退出錯誤 - 參數數量錯誤

ArgumentError in Devise/sessionsController#destroy 
wrong number of arguments (1 for 0) 

框架跟蹤的頂部有:

devise (1.2.1) app/controllers/devise/sessions_controller.rb:21:in `signed_in?' 
devise (1.2.1) app/controllers/devise/sessions_controller.rb:21:in `destroy' 

我的用戶模型具有以下中它:

# Setup accessible (or protected) attributes for your model 
attr_accessible :email, :password, :password_confirmation, :remember_me 
# Include default devise modules. Others available are: 
# :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and 
devise :database_authenticatable, :registerable, :omniauthable, 
    :recoverable, :rememberable, :trackable, :validatable 

我不知道,我應該尋找添加/刪除論據,SIGN_OUT行動。任何幫助,將不勝感激。

我看了看21行,它具有如下:

def destroy 
    signed_in = signed_in?(resource_name) 
    Devise.sign_out_all_scopes ? sign_out : sign_out(resource_name) 
    ... 
end 

source

所以這是一個設計缺陷?或者我沒有設置正確的東西?

+0

你的sessions_controller行21中有什麼? – corroded 2011-04-03 18:42:06

+0

你的Devise.setup ....代碼是什麼樣子的? – 2011-04-03 18:44:27

+0

@james我在devise.rb中改變的唯一一件事是添加config.omniauth:twitter ...和一個用於:facebook。即使我評論它們仍然會拋出錯誤。 – RyanJM 2011-04-03 18:46:57

回答

2

我正面臨同樣的問題。這篇文章幫了我:https://github.com/kristianmandrup/cream/issues/24

我所做的是設置config.sign_out_all_scopes = false,在config/initializers/devise.rb文件。默認情況下這個配置是真實的。

希望這會有所幫助。

0

我剛剛有同樣的問題。在我的情況下,這是因爲我已經定義了signed_in?作爲以前的身份驗證實驗的輔助方法。一旦我刪除了我以前的會話管理輔助方法,一切都奏效了。