Ruby Build an Address Book in Ruby Class Design Initializing and Calling Methods

Rafael Herazo
Rafael Herazo
18,114 Points

A little help please

I keep getting the 'address ' variable is not defined

class Address attr_accessor :kind, :street_1, :street_2, :city, :state, :postal_code, :address

def initialize(kind, street_1, street_2, city, state, postal_code, address) @address = address @kind = kind or '' @street_1 = street_1 or '' @street_2 = street_2 or '' @city = city or '' @state = state or '' @postal_code = postal_code or '' end

address.rb
class Address
  attr_accessor :kind, :street_1, :street_2, :city, :state, :postal_code, :address


  def initialize(kind, street_1, street_2, city, state, postal_code, address)
    @address = address
    @kind = kind or ''
    @street_1 = street_1 or ''
    @street_2 = street_2 or ''
    @city = city or ''
    @state = state  or ''
    @postal_code = postal_code or ''
  end

  def to_s(format = 'short')
    address = ''
    case format
    when 'long'
      address += street_1 + "\n"
      address += street_2 + "\n" if !street_2.nil?
      address += "#{city}, #{state} #{postal_code}"
    when 'short'
      address += "#{kind}: "
      address += street_1
      if street_2
        address += " " + street_2
      end
      address += ", #{city}, #{state}, #{postal_code}"
    end
    address
  end
end

2 Answers

Seth Reece
Seth Reece
32,863 Points

Hi Rafael,

The challenge is asking "Below the Address class definition, initialize a variable called address which will be a new instance of the Address class."

To do that, outside of the Address class you want to create a variable named address set to equal Address.new(with all required params). e.g.

class Address
  attr_accessor :kind, :street_1, :street_2, :city, :state, :postal_code

  def initialize(kind, street_1, street_2, city, state, postal_code)
    @kind = kind or ''
    @street_1 = street_1 or ''
    @street_2 = street_2 or ''
    @city = city or ''
    @state = state  or ''
    @postal_code = postal_code or ''
  end

  def to_s(format = 'short')
    address = ''
    case format
    when 'long'
      address += street_1 + "\n"
      address += street_2 + "\n" if !street_2.nil?
      address += "#{city}, #{state} #{postal_code}"
    when 'short'
      address += "#{kind}: "
      address += street_1
      if street_2
        address += " " + street_2
      end
      address += ", #{city}, #{state}, #{postal_code}"
    end
    address
  end
end

address = Address.new("Home", "1 some street", "Ste A", "Anytown", "US", "11122")
Rafael Herazo
Rafael Herazo
18,114 Points

Thanks a lot, I would have never figured it out.