1

クエリを実行すると

Geocoder.search(@data.zip_code).inspect

出力は次のハッシュです。

[#<Geocoder::Result::Google:0x007fc46360e8f0 @data={"address_components"=>[{"long_name"=>"92301",
"short_name"=>"92301", "types"=>["postal_code"]},
{"long_name"=>"Adelanto", "short_name"=>"Adelanto",
"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"]}], "formatted_address"=>"Adelanto,
CA 92301, USA",
"geometry"=>{"bounds"=>{"northeast"=>{"lat"=>34.82148189999999,
"lng"=>-117.35638}, "southwest"=>{"lat"=>34.506587,
"lng"=>-117.69486}}, "location"=>{"lat"=>34.6599838,
"lng"=>-117.5026174}, "location_type"=>"APPROXIMATE",
"viewport"=>{"northeast"=>{"lat"=>34.82148189999999,
"lng"=>-117.35638}, "southwest"=>{"lat"=>34.506587,
"lng"=>-117.69486}}}, "types"=>["postal_code"]}, @cache_hit=nil>]

これらの情報 (フィールドなどformatted_address) にアクセスしようとしていますが、これらのデータを取得する方法がわかりません。

ドキュメントには次のように書かれています。

Every Geocoder::Result object, result, provides the following data:
  result.latitude - float
  result.longitude - float
  result.coordinates - array of the above two
  ...

ただし、これはここでは機能しません (何か間違っているのか、これらの情報が古くなっているのかわかりません)。

ただし、ハッシュからアドレス全体を取得するにはどうすればよいですか?

編集: 解決策:

puts Geocoder.search(@listing.zip_code)[0].data["formatted_address"]
# => Adelanto, CA 92301, USA

ただし、Geocoder呼び出しでエラーが返されるか、何かが見つからないか、接続がタイムアウトになると、エラーが発生します。これを回避する方法は?私の目標は住所を取得して Twitter に投稿することですが、Geocoder からエラーを受け取った場合、これらのデータを Twitter に投稿する代わりにエラーを受け取ることになり、ユーザー フレンドリーではありません。

このクエリでエラーを検出する方法はありますか?

ありがとうございました

4

0 に答える 0