2013-04-29 84 views
0

我創建了一個session_controller處理令牌身份驗證,但我得到這個錯誤:設計session_controller引發ArgumentError

Started POST "https://stackoverflow.com/users/sign_in" for 127.0.0.1 at 2013-04-29 20:29:44 +0200 
Processing by SessionsController#create as */* 
    Parameters: {"user_login"=>{"login"=>"[email protected]", "password"=>"[FILTERED]"}} 
Completed 500 Internal Server Error in 1ms 

ArgumentError (wrong number of arguments (2 for 1)): 
    activerecord (3.2.13) lib/active_record/attribute_methods.rb:24:in `[]' 
    .../bundler/gems/devise-dceb788c6b53/lib/devise.rb:436:in `block (2 levels) in configure_warden!' 
    warden (1.2.1) lib/warden/session_serializer.rb:35:in `fetch' 
    warden (1.2.1) lib/warden/proxy.rb:212:in `user' 
    warden (1.2.1) lib/warden/proxy.rb:318:in `_perform_authentication' 
    warden (1.2.1) lib/warden/proxy.rb:104:in `authenticate' 
    warden (1.2.1) lib/warden/proxy.rb:114:in `authenticate?' 
    .../bundler/gems/devise-dceb788c6b53/app/controllers/devise_controller.rb:124:in `require_no_authentication' 

我的控制器看起來像:

class SessionsController < DeviseController 

    before_filter :ensure_params_exist 

    respond_to :json 

    def create 
    build_resource 
    resource = User.find_for_database_authentication(:email => params[:user_login][:login]) 
    return invalid_login_attempt unless resource 

    if resource.valid_password?(params[:user_login][:password]) 
     sign_in("user", resource) 
     render :json => {:success => true, :auth_token => resource.authentication_token, :email => resource.email} 
     return 
    end 
    invalid_login_attempt 
    end 

我的路由文件:

devise_for :users, :controllers => {:sessions => "sessions"} 

怎麼了?

回答

2

類聲明不符合設計命名空間:

class SessionsController < Devise::SessionsController 
+0

什麼都沒有改變 – Dodjs 2013-04-30 19:59:15

+0

然後,我不知道......順便說一句params中登錄電子郵件有一個「」最後,這是正常的嗎?嘗試** sign_in(resource_name,resource)**而不是您當前的sign_in。另外,如果你用** super **替換了所有創建的動作,它是否工作? – Raindal 2013-05-01 15:10:56

相關問題