2013-04-29 88 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

相关问题