Salut Im obtenir une erreur de base qui est vraiment standard je suppose en Ruby, mais ne sais pas quoi en faire. J'ai un programme que j'ai écrit. Son but est d'inscrire les invités à un camping. Vous avez un menu avec 5 options différentes. 1. Checkin. Quand je fais cela, j'obtiens une méthode non définie generateParkingLot' for #<Camping:0x10030a768> (NoMethodError) When I choose Checkout I get a undefined local variable or method
départ 'pour Menu: Class (NameError). Donc, s'il vous plaît je quelqu'un a la moindre idée de mon problème ce serait génial. Je vais coller ici tout mon code. Le code est séparé dans différents fichiers et j'ai utilisé require pour les différents fichiers. Ici, bien que je vais coller tout le code dans une trace. Merci pour toute aide.Aide! check_in ': méthode non définie `push' pour nil: NilClass (NoMethodError)
-Sébastien
require 'guest'
require 'parking_lot'
class Camping
attr_accessor :current_guests, :parking_lots, :all_guests, :staticGuests
def initialize(current_guests, parking_lots, all_guests, staticGuests)
@current_guests = Array.new()
# initiera husvagnsplatserna
@parking_lots = Array.new(32)
32.times do |nr|
@parking_lots[nr] = Parking_Lot.new(nr)
@staticGuests = Array[
Guest.new("Logan Howlett", "Tokyo", "07484822",1, @parking_lots[0]),
Guest.new("Scott Summers", "Chicago", "8908332", 2, @parking_lots[1]),
Guest.new("Hank Moody", "Boston", "908490590", 3, @parking_lots[2]),
Guest.new("Jean Grey", "Detroit", "48058221", 4, @parking_lots[3]),
Guest.new("Charles Xavier","Washington DC", "019204822",5, @parking_lots[4])
]
end
@all_guests = []
@staticGuests.each do |guest|
@current_guests[guest.plot.nr] = guest
@all_guests.push(guest)
end
end
def to_s
# creates an empty string
list = " "
# loop from 1 to 32
(1..32).each do |n|
if ([email protected]_guests[n-1].nil?)
list += @current_guests[n-1].to_s
else
# else adds the text "Vacant"
list += n.to_s + ": Vacant!\n"
end
return list
end
def generateParkingLot
randomNr = 1+rand(32)
# exists a guest at the (0-based) position?
if ([email protected]_guests[randomNr-1].nil?)
# if so generate a new figure
generateEmpty(array)
else
# returns the generated number
return randomNr
end
end
end
end
class Guest
attr_accessor :firstname, :lastname, :address, :phone, :departure
attr_reader :arrived, :plot
def initialize (firstName, lastName, address, phone, plot)
@firstName = firstName
@lastName = lastName
@address = address
@phone = phone
@arrived = arrived
@plot = plot
fin
def to_s
"Personal information:
(#{@firstName}, #{@lastName}, #{@address}, #{@phone}, #{@arrived}, #{@departure}, #{@plot})"
end
end
require 'ruby_camping'
require 'camping_guests'
class Main
if __FILE__ == $0
$camping = Camping.new(@current_guests, @all_guests, @parking_lots,@staticGuests)
puts "\n"
puts "Welcome to Ruby Camping!"
while (true)
Menu.menu
end
end
end
require 'date'
require 'camping_guests'
require 'guest'
class Menu
def initialize(guests = [])
@camping = Camping.new(guests)
end
def self.menu
puts "---------------------------"
puts " Menu"
puts " 1. Checkin"
puts " 2. Checkout"
puts " 3. List current guests"
puts " 4. List all guests"
puts " 5. Exit\n"
puts ""
puts " What do you want to do?"
puts "---------------------------"
print ": "
action = get_input
do_action(action)
end
# fetches menu choice and returns chosen alternativ
def self.get_input
input = gets.chomp.to_i
while (input > 5 || input < 1) do
puts "Ooups, please try again."
input = gets.chomp.to_i
end
return input
end
def self.do_action(action)
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
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
newGuest = Guest.new(firstName, lastName, address, phone,arrived,$camping.parking_lots[newPLot-1])
$camping.current_guests[newPLot-1] = newGuest
@all_guests.push(newGuest)
puts "The registration was a success!! You have received the " + newPLot.to_s + "."
end
def self.check_out
puts "Welcome to checkout!"
puts $camping.all_guests
puts "State plot of the person to checkout!"
plot = gets.chomp.to_i
puts "Ange utcheckningsdatum: "
departureDate = gets.chomp.to_i
guest = $camping.current_guests[plot-1]
@departure = departure
guest.departure = departureDate
guestStayedDays = departureDate - guest.arrived
guest.plot.increase(guestStayedDays)
puts guest
$camping.current_guests[plot-1] = nil
end
end
class Parking_Lot
attr_accessor :nr
attr_reader :electricity_meter
def initialize (nr)
@nr = nr
@electricity_meter = 4000-rand(2000)
end
def increase_meter(days)
generatedUse = (10+rand(70))*days
puts "Increases the meter with " + generatedUse.to_s + " kWh."
@electricity_meter += generatedUse
end
def to_s
"Plot #{@nr+1} Electricity meter: #{@electricity_meter} kWh"
end
end
Votre message présente de sérieux problèmes de formatage. S'il vous plaît modifier. –
Oui, vous devez mettre quatre espaces au début de chaque ligne de code afin qu'il soit formaté en tant que code –
Merci pour l'aide les gars avec le formatage du code. – Sebastien