在Ruby的另一個真正的新手這裏,所以請溫柔... 我正在與rails3.0的alexreisner的地理編碼器,我無法從Geocoder :: Results lib調用方法。我深入瞭解Geocoder文檔,但我無法完成一件簡單的事情:從用戶提交的地址中提取「狀態」結果。因此,將「加利福尼亞州舊金山123街」改爲「CA」或「California」。 (我的程序現在只會使用「狀態」信息來幫助確定結果,但我希望在完善應用程序後有詳細的地址信息供我使用,這就是爲什麼我要求一個完整的地址。)Rails Geocoder「未定義的方法錯誤」
我已經建立了我的模型通過最好的我已經能夠從文檔和其他答案我已經在這裏找到,但以前的答案類似於這個問題沒有幫助我:
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」)並且提取所有縣,州和城市的信息,但我似乎無法通過我的模型提取「狀態」。
感謝您的幫助!
使用該代碼,我仍然收到「城市」「郵編」和「國家」未定義的方法錯誤消息。我沒有使用Geocoder :: Result文件,所以我不知道爲什麼這些不起作用。 –
剛剛得到它。我需要使用我的「項目」類而不是「obj」,並且真的不想使用反向地理編碼。感謝您的幫助。 –