Ruby Geocoder [Rails] - 如何遍历此结果

时间:2013-09-07 02:09:36

标签: ruby-on-rails ruby

我刚刚安装了Ruby Geocoder而我正试图遍历Geocoder::Result,但是我一直在努力。我在rails控制台中,并使用了以下内容:

s = Geocoder.search("90210")

返回以下内容:

[#<Geocoder::Result::Google:0x007ff295579ad8 @data={"address_components"=>[{"long_name"=>"90210", "short_name"=>"90210", "types"=>["postal_code"]}, {"long_name"=>"Beverly Hills", "short_name"=>"Beverly Hills", "types"=>["locality", "political"]}, {"long_name"=>"Los Angeles", "short_name"=>"Los Angeles", "types"=>["administrative_area_level_2", "political"]}, {"long_name"=>"California", "short_name"=>"CA", "types"=>["administrative_area_level_1", "political"]}, {"long_name"=>"United States", "short_name"=>"US", "types"=>["country", "political"]}], "formatted_address"=>"Beverly Hills, CA 90210, USA", "geometry"=>{"bounds"=>{"northeast"=>{"lat"=>34.1354771, "lng"=>-118.3867129}, "southwest"=>{"lat"=>34.065094, "lng"=>-118.4423781}}, "location"=>{"lat"=>34.1030032, "lng"=>-118.4104684}, "location_type"=>"APPROXIMATE", "viewport"=>{"northeast"=>{"lat"=>34.1354771, "lng"=>-118.3867129}, "southwest"=>{"lat"=>34.065094, "lng"=>-118.4423781}}}, "types"=>["postal_code"]}, @cache_hit=nil>]

如何访问结果的特定部分?我尝试过以下方法:

s.result.cityresult.citys.data ??但这些都不起作用。任何想法都会很棒。

谢谢!

3 个答案:

答案 0 :(得分:3)

我明白了。文档说“Geocoder.search返回一个Geocoder :: Result对象数组”

因此,我需要这个:

s[0].city&lt; =比佛利山庄或 s.first.city(感谢@fotanus)

答案 1 :(得分:1)

根据the docs,它是一个结构体,因此您应该将这些值作为索引符号进行访问,如下所示:

result[:city]

该链接具有可从此对象访问的内容。

答案 2 :(得分:0)

使用“Geocoder.search”时,您需要解析几个图层才能到达城市。以下将返回“Beverly Hills”。

s.first.data["address_components"][1]["short_name"]

如果您想使用其他答案中的语法,则需要创建一个新的地理编码器实例,而不是使用Geocoder.search