Im getting this error
cf.rb:26: undefined method `price' for #<Ticket:0x27ed554
@d="11/12/2006", @price=5.0, @v="yer"> (NoMethodError)
thanks, just learning
class Ticket
聽聽聽聽聽聽[...]
聽聽def price=(amount)
聽聽聽聽@price = amount
聽聽end
end
ticket = Ticket.new("yer","11/12/2006")
puts "ticket stuff is #{ticket.venue} #{ticket.date}"
ticket.price = (5.00)
puts "ticket mooch is #{ticket.price}"
聽聽You define the price= method, but you don't define the price method.
You can't access to instance variables from outside the instance unless
you explicitly allow it via appropriate accessors. In your case,
replacing the price= definition by
attr_accessor :price
should work pretty well. You might want to use attr_reader to only grant
read acces to an instance variable or attr_writer to only grant write
access.
Sure, where you've got a method "price=(amount)", below:
聽聽def price=(amount)
聽聽聽聽@price = amount
聽聽end
聽聽
this only handles the assigning of the price variable. This means that:
ticket.price = (5.00)
聽聽
works fine, but trying to access ticket.price results in the error you're seeing (hence why the error doesn't occur on the above line, but on a later line). You simply need a method declaration for retrieving the variable value within your class, so try putting this in there:
def price
聽聽聽聽@price
end
This then ensures you've got one method ("price=") that handles the assignation of values, and one method ("price") to retrieve the current value.