Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Ruby Ruby Collections Ruby Hashes Working with Hash Values

Donald Lobree
Donald Lobree
10,307 Points

Why isn't this correct?

Here's my code:

grocery_list = grocery_item.values_at("item").inspect

When I run it in irb, I get this array returned:

["bread"]

So why am I not passing the tests?

Thank you!

Donny

hash.rb
grocery_item = { "item" => "Bread", "quantity" => 1, "brand" => "Treehouse Bread Company" }

if grocery_item.has_value?("Bread")
   grocery_item.store("food", true)
end

grocery_list = grocery_item.values_at("item").inspect

2 Answers

Task 2 wants you to store an array in grocery_list. inspect returns a string whereas values_at returns an array

I added the following to the end of the code:

grocery_list = grocery_item.values_at("item").inspect

p grocery_list
p grocery_list.instance_of? String  
p grocery_list.instance_of? Array 

The result is

"[\"Bread\"]"                                                                            
true                                                                                     
false 

Then I tested

grocery_list = grocery_item.values_at("item")

p grocery_list  
p grocery_list.instance_of? String  
p grocery_list.instance_of? Array 

The result is

["Bread"]                                                                                
false                                                                                    
true  

So for task 2 you want:

grocery_list = grocery_item.values_at("item")