Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

`-': nil can't be coerced into Fixnum (TypeError)

Tags:

ruby

In my program Im getting an error which says ./ruby_camping.rb:91:in `-': nil can't be coerced into Fixnum (TypeError). What I would like to do is to checkout a guest that I have just checked in. Here is the block of code for the checkout part:

def self.check_out 
  puts "Welcome to checkout!"
  puts $camping.current_guests
  puts " Here are the current guests, who do you want to checkout?!" 
  puts "State plot number "
  plot = gets.chomp.to_i
  guest = $camping.current_guests[plot-1] 
  puts "State the date for your checkout (a number bigger then " + guest.arrived.to_s + "): "
  # it should not be possible for a guest to checkout before she has checked in
  departureDate = gets.chomp.to_i
  guestStayedDays = departureDate - guest.arrived #Days the guest has stayed
  while (guestStayedDays < 1) do                        
   puts "The date for checkout is not valid. The guest checked in " + guest.arrived.to_s
   puts "Please state a new date."
   departureDate = gets.chomp.to_i
   guestStayedDays = departureDate - guest.arrived
  end       
  guest.departure = departureDate
  guest.plot.increase(guestStayedDays) # increases the electricity meter
  puts guest # prints the guest
  $camping.current_guests[plot-1] = nil # emptys the plot
 end
end

How come departureDate still is nil? Thankful for help!

like image 436
Sebastien Avatar asked Aug 04 '10 15:08

Sebastien


1 Answers

To get a more detailed answer, you would have to indicate which line was line 91 in your program. However to point you in the right direction, if you're seeing nil can't be coerced into Fixnum then it means something on the right hand side of a - is nil. e.g.

irb(main):001:0> 5 - nil
TypeError: nil can't be coerced into Fixnum
        from (irb):1:in `-'
        from (irb):1

From your code the only possible example of this I can see is guestStayedDays = departureDate - guest.arrived so I would check the value of guest.arrived.

If something on the left hand side of a - were nil e.g. departureDate or plot then you would get undefined method '-' for nil:NilClass instead.

like image 96
mikej Avatar answered Nov 14 '22 14:11

mikej