1

ここで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")を使用して、すべての郡、州、および市の情報を取得することもできますが、モデルから「州」を抽出できないようです。

助けてくれてありがとう!

4

2 に答える 2

6

必ずRailsサーバーを再起動してください。Railsコンソールでジオコーディングがうまく機能する状況に遭遇しましたundefined method 'geocoded_by'が、アプリでを取得しました。これが同じエラーを受け取る理由ではないように見えますが、それは私のものでした。

于 2012-03-07T23:08:34.160 に答える
1

Geocoderサイトの例を見ると、ブロックに生成される2番目の値は配列またはその他の形式のコレクションのように見えるため、ブロックのメソッドを直接呼び出すことはできません。代わりに、最初に適切なオブジェクトをそこから引き出す必要があります。

reverse_geocoded_by :lat, :lon do |obj,results|
  if geo = results.first
    obj.city    = geo.city
    obj.zipcode = geo.postal_code
    obj.country = geo.country_code
  end
end
于 2011-10-23T09:34:39.077 に答える