Я использую жемчужину ruby geocoder для поиска по местоположению. Я хочу ограничить поиск мест, которые официально были запущены. Если кто-то ищет по zip, это легко использовать с регулярным выражением. Но если кто-то ищет по городу, мне нужно преобразовать город в почтовый индекс, проверить мою почтовую таблицу и, если положительно, вернуть результаты поиска.Ruby Geocoder gem чтобы найти почтовый индекс
geocoder api имеет секцию для обратного геокодирования:
reverse_geocoded_by :latitude, :longitude do |obj,results|
if geo = results.first
obj.city = geo.city
obj.zipcode = geo.postal_code
obj.country = geo.country_code
end
end
after_validation :reverse_geocode
Это, очевидно, построен только для использования в модели. Но я пытаюсь использовать его в своем контроллере, но obj.zipcode не работает вообще. Geocoder.search ('san jose, ca'), кажется, возвращает то, что мне нужно, я просто не знаю, как добраться до него. Вот где я нахожусь:
if params[:search].present?
# coords = Geocoder.coordinates(params[:search])
zip = Geocoder.search(params[:search])
if Zip.where(:zip => (params[zip.zipcode]), :launch => true).exists?
addresses = Address.near(params[:search], 25, :order => :distance)
@profiles = addresses.map{ |ad| ad.profile }.uniq unless addresses.nil?
@title = "Addresses Near " + (params[:search]).to_s
else
if Zip.where(:zip => (params[zip.zipcode]), :nearlaunch => true).exists?
addresses = Address.near(params[:search], 25, :order => :distance)
@profiles = addresses.map{ |ad| ad.profile }.uniq unless addresses.nil?
@title = "We have not launched for your location but these are near by " + (params[:search]).to_s
else
redirect_to :controller => 'pages', :action => 'notlaunched'
end
end
Не работает в Швейцарии = _ = – Phil