Ruby Ruby Loops Build a Simple Contact List Hash and Array Iteration

I am getting a TypeError saying "no implicit conversion of String into Integer. Why is an integer required here?

In the contact_list array, it seems the phone number is listed as a string, so I am confused as to why I need to convert it? Or perhaps I am misunderstanding the error message?

contact_list.rb
contact_list = [
  {"name" => "Jason", "phone_number" => "123"},
  {"name" => "Nick", "phone_number" => "456"}
]

contact_list.each do |contact|
  puts "Contact: #{contact_list["name"]} and Phone Number: #{contact_list["phone_number"]}"
end

1 Answer

Luke Fritz
Luke Fritz
10,255 Points

The variables in line 7 should be contact instead of contact_list.

contact_list refers to the Array of Hashes and requires an Integer index, so "name" is invalid. contact refers to the current Hash for each iteration.

The following should work.

contact_list = [
  {"name" => "Jason", "phone_number" => "123"},
  {"name" => "Nick", "phone_number" => "456"}
]

contact_list.each do |contact|
  puts "Contact: #{contact["name"]} and Phone Number: #{contact["phone_number"]}"
end
Marcos Rodriguez
Marcos Rodriguez
6,762 Points

Thank you Luke really helped me out. I completely forgot we call each item in the array through the variable contact.