Array Confusion

I have the following instruction that returns an array that I’m quite confused about. I can’t even read it. Can someone shed some light as to how to reach into this array of hashes (that’s what I can see) to get the location lat and lon?

res = Geocoder.search(addy1)

This is the res:

[#<Geocoder::Result::Google:0x007fb46c345e18 @data={"address_components"=>[{"long_name"=>"1600", "short_name"=>"1600", "types"=>["street_number"]}, {"long_name"=>"Amphitheatre Parkway", "short_name"=>"Amphitheatre Pkwy", "types"=>["route"]}, {"long_name"=>"Mountain View", "short_name"=>"Mountain View", "types"=>["locality", "political"]}, {"long_name"=>"California", "short_name"=>"CA", "types"=>["administrative_area_level_1", "political"]}, {"long_name"=>"United States", "short_name"=>"US", "types"=>["country", "political"]}, {"long_name"=>"94043", "short_name"=>"94043", "types"=>["postal_code"]}], "formatted_address"=>"1600 Amphitheatre Parkway, Mountain View, CA 94043, USA", "geometry"=>{"location"=>{"lat"=>37.4219985, "lng"=>-122.0839544}, "location_type"=>"ROOFTOP", "viewport"=>{"northeast"=>{"lat"=>37.4233474802915, "lng"=>-122.0826054197085}, "southwest"=>{"lat"=>37.4206495197085, "lng"=>-122.0853033802915}}}, "types"=>["street_address"]}, @cache_hit=nil>]

Outside of the conversion of string to integer errors (?), I can’t traverse this array because it holds a comment in the first line there, before an instance variable is set to the data. Quite confused. Any insight appreciated.

Cheers

Your’e looking at the result in correctly,— that is not a comment in the array! Its the “stringified” output of the array that contains Geocoder::Result objects.

res = Geocoder.search(addy1).first

res.data # => gives you entire data .. seen as @data and then you can traverse as a hash

There are other helper routines too (a few mentioned below). res.address res.city res.state res.formatted_address res.coordinates

etc. See these two files to learn all the methods of Geocoder::Result

Cheers! @gautamrege

I see. Now it is clear. I was under the impression that the inspect method was just a representation of the returned array. Good to know. Thanks for the notes.

Cheers