ここでRubyのもう1つの真の初心者なので、優しくしてください... Rails 3.0でalexreisnerのGeocoderを使用していますが、Geocoder ::Resultslibからメソッドを呼び出すことができません。ジオコーダーのドキュメントを詳しく調べましたが、ユーザーが送信したアドレスから「状態」の結果を引き出すという簡単なことは1つできません。したがって、「123 Fake Street、San Francisco、CA」を「CA」または「California」に変更します。
(私のプログラムは今のところ「状態」情報のみを使用して結果を判断しますが、後日アプリを改良するときに完全な住所情報を使用したいので、完全な住所を要求します。 )。
私はここで見つけたドキュメントや他の回答から収集できた最高のものを介してモデルを設定しましたが、この主題に類似した以前の回答は私を助けませんでした:
class Project < ActiveRecord::Base
attr_accessible :title, :address, :latitude, :longitude
belongs_to :user
geocoded_by :address
after_validation :fetch_coordinates
reverse_geocoded_by :latitude, :longitude do |obj, geo|
obj.state = geo.state
obj.country_code = geo.country_code
obj.address = [geo.state, geo.country_code].join(",")
end
after_validation :reverse_geocode
end
しかし、これにより、州、国コード、および住所の「未定義のエラーメソッド」が発生します。Geocoder gemのドキュメントにこれらのメソッドが明確に記載されているため、わかりません。私のモデルは単にそれらにアクセスできないようです。(記録として、私のモデルは入力されたアドレスから緯度と経度を取得できるため、Geocoderが正しく構成されているように見えます。また、メソッド「geocoded_by」はうまく機能します。さらに、Google APIに適切に設定されています)。
私はここで簡単な何かを見逃していると確信しています。Railsコンソールでは、Geocoder.search( "Miami、FL")を使用して、すべての郡、州、および市の情報を取得することもできますが、モデルから「州」を抽出できないようです。
助けてくれてありがとう!