我正在尝试使用Geocoder gem获取城市,国家和地区名称。 我就是这样做的:
geo_data = Geocoder.search('50.131.44.XXX')
puts geo_data.inspect
puts geo_data[0].city
#puts geo_data[0].inspect
puts geo_data[0].country_code
puts geo_data[0].region_name
和输出:
[#<Geocoder::Result::Freegeoip:0x007fd6db981b38 @data={"ip"=>"50.131.44.XXX", "country_code"=>"US", "country_name"=>"United States", "region_code"=>"CA", "region_name"=>"California", "city"=>"Sunnyvale", "zipcode"=>"94087", "latitude"=>XXX, "longitude"=>-XXX, "metro_code"=>"807", "areacode"=>"408"}, @cache_hit=nil>]
Sunnyvale
US
NoMethodError (undefined method `region_name' for #<Geocoder::Result::Freegeoip:0x007fd6db981b38>):
为什么我无法获取地区名称?
由于
答案 0 :(得分:2)
geo_data[0].data["region_name"]
。访问Hash#[]中的值需要使用其密钥
Geocoder.search()
方法返回array
对象data
。在数据中,您有简单的hash
值。