2016-10-24 1 views
0

Je reçois cette erreur après avoir frappé connexion ma trace complète estméthode non définie [] » pour nil: NilClass + après la connexion

undefined method `[]' for nil:NilClass 

Extracted source (around line #20): 


def create 
    @session = Session.new(params[:session], request.remote_ip) 
    if @session.valid? 
    set_current_user(@session.current_user) 
    add_to_current_cart params 



Application Trace | Framework Trace | Full Trace 
app/models/session.rb:12:in `initialize' 
app/controllers/sessions_controller.rb:20:in `new' 
app/controllers/sessions_controller.rb:20:in `create' 
Request 

Parameters: 

{"utf8"=>"✓", 
    "authenticity_token"=>==", 
"email"=>{"{:placeholder=>\"[email protected]\", 
:tabIndex=>\"1\", 
\"class\"=>\"\"}"=>""}, 
"password"=>"[FILTERED]", 
"commit"=>"Log In"} 

Mon fichier contrôleur sessions est

def create 
    @session = Session.new(params[:session], request.remote_ip) 
    if @session.valid? 
    set_current_user(@session.current_user) 
    add_to_current_cart params 
    add_to_favorites params 

    if session[:return_to] 
    redirect_to session[:return_to] 
    else 

session fichier .rb est

class Session 
INCORRECT_PASSWORD = "The password you entered is incorrect.  Please try again (make sure your caps lock is off)." 
EMAIL_NOT_FOUND = "The email id you entered does not belong to any account." 
MANDATORY_FIELDS = "You must fill in all of the fields" 

include ActiveModel::Validations 
attr_accessor :email, :password, :errors 
attr_reader :current_user 

def initialize(params={}, ip_address=nil) 
    @errors = ActiveModel::Errors.new(self) 
    @email = params[:email] 
    @password = params[:password] 
    @current_user = User.find_by_email(@email) 
    @ip_address = ip_address 
end 

def valid? 
mandatory_fields_presence 
if @current_user && @errors.empty? 
    if @current_user.waiting_for_confirmation? 
    email_confirmation_link = "/account/#{@current_user.uuid}/send-confirmation-email" 
    @errors.add(:base, "Please confirm your account first. <a href='#{email_confirmation_link}'>Resend confirmation link</a>") 
    end 
end 
authenticate if @errors.empty? 
@current_user.signed_in(@ip_address) if @errors.empty? 
@errors.empty? 

end 

private 
    def mandatory_fields_presence 
    @errors.add(:email, MANDATORY_FIELDS) if @email.blank? or  @password.blank? 
    end 

def authenticate 
    @errors.add(:email, EMAIL_NOT_FOUND) if @current_user.nil? 
    if @errors.empty? && [email protected]_user.authenticated?(@password) 
    @errors.add(:password, INCORRECT_PASSWORD) 
end 
end 

end 
     if session[:login_page] == true 
     redirect_to root_path 
    else 
     redirect_to :back 
    end 
    end 
    else 
    if session[:login_page] == true 
     render :new 
    else 
     flash[:login_failed] = OpenStruct.new({ :errors => @session.errors, :login_failed => true }) 
     redirect_to :back 
    end 
    end 
end 

travail sur Ruby 1.9.3, 4.2.5 rails Je suis unabl e pour vous connecter après avoir appuyé sur le bouton de connexion, même formulaire d'inscription est également obtenir ce genre de problème. Aidez-moi à résoudre ce problème?

+0

les paramètres que vous envoyez ne contiennent pas le 'hash de session – Sravan

+0

vous envoyez les params faux, vérifiez mes réponses sur la façon dont vous pouvez envoyer les paramètres. pls coller le formulaire – Sravan

Répondre

1

Les paramètres que vous envoyez sont incorrects, vous prenez la valeur params comme une chaîne, ce qui est incorrect,

Essayez d'envoyer params comme clé et la valeur,

Envoyer Paramètres comme:

{ 

    "utf8"=>"✓", 
    "authenticity_token"=>"b7t1yJ7cGyxDmecBpvBrGLRbh/ubtPjsUFdP/HosK8kp/ZLRtrV3dVWE2vPjDnThCbt9hk1ftm5ZMg9Ia1StWw==", 
    "email"=>{"[email protected]", 
    "tabIndex"=>"1", 
    "password"=>"[FILTERED]" 
    "commit"=>"Log In" 
} 

@email = params[:email] cette ligne vous renvoie une erreur, car le format params est incorrect.

+0

Comment inclure les paramètres –

+0

Veuillez coller le formulaire, le formulaire que vous avez saisi est incorrect – Sravan

+0

@Pavan Kumar, que s'est-il passé? – Sravan