2010-08-03 2 views
0

En essayant d'ajouter des objets à un tableau en utilisant push. J'ai un programme où vous pouvez enregistrer des invités. Quand je choisis l'option checkin de mon menu Im incapable d'ajouter le nouvel invité à l'histoire d'invité.méthode non définie `push 'pour nil: NilClass (NoMethodError) Ruby

Ce travail Dont:

def self.check_in 
    puts "Welcome to the checkin" 
    puts "Please state your first name: " 
    firstName = gets.chomp 
    puts "Please state your last name:" 
    lastName = gets.chomp 
    puts "Write your address: " 
    address = gets.chomp 
    puts "and your phone number: " 
    phone = gets.chomp 
    puts "finally, your arrival date!" 
    arrived = gets.chomp 

     newPLot = $camping.generateParkingLot 
     guest = Guest.new(firstName, lastName, address, phone, arrived) 
     $camping.current_guests[newPLot-1] = guest 

     puts "The registration was a success!! You have received plot " + newPLot.to_s + "." 
     @all_guests.push(guest) # adds the guest to the history 
    end 

Ici je reçois un check_in': undefined method push » pour nulle: NilClass (NoMethodError). Mais si je commente cette ligne:

#@all_guests.push(guest) # adds the guest to the history 

Je peux enregistrer un invité. Un puis quand je choisis l'option 3 de mon menu qui est:

def self.do_action(action) 
# utför händelse baserat på valet 
    case action 
    when 1: 
     check_in 
    when 2: 
     check_out 
    when 3: 
     puts $camping.current_guests 
     when 4: 
     puts $camping.all_guests 
     when 5: 
     puts "You are now leaving the camping, welcome back!" 
     exit  
    end 
    end 

Ensuite, je vois l'invité là-bas. Le seul problème est que je ne peux pas faire l'option 4 qui est de montrer tous les invités parce que j'ai commenté cette ligne de code. Donc, pour arrondir les choses, comment puis-je utiliser cette ligne de code:

@all_guests.push(guest) # adds the guest to the history 

Sans recevoir le message d'erreur ?? Merci pour toute aide!

+0

Ne modifiez pas votre question pour la changer en une question totalement différente une fois que vous avez répondu à la première question. Je vais modifier cela pour annuler vos modifications. Posez une seconde question (Si vous avez peur que vous posiez trop de questions sur StackOverflow - nous ne prendrons probablement pas soin de déboguer votre programme entier pour vous - trouvez quelqu'un que vous pouvez poser en personne.) –

+0

Je suis vraiment Pardon. C'est la première fois que j'ai utilisé StackOverflow pour ces choses, donc je suis nouveau à ce sujet. Donc ça n'avait rien à voir avec le fait que j'avais peur de poser une nouvelle question juste que je pensais pouvoir le faire comme ça. – Sebastien

Répondre

4

@all_guests n'est pas défini dans le fichier où vous obtenez l'erreur, il est défini dans le $camping global. Changez le code en

$camping.all_guests.push(...) 

et de voir si cela fonctionne mieux pour vous.

+1

Merde! Je vous remercie!! Incroyable depuis combien de temps je me bats avec celui-là. Je te dois :) – Sebastien

+0

De rien. Si cela résout votre problème, accepteriez-vous la réponse? –

+0

C'est fait, merci! Bien sûr, je peux l'accepter! – Sebastien

Questions connexes