J'ai dans mon shop.rb
:Mise à jour de latitude géocodage et la longitude adresse à chaque fois est mis à jour
def geocode_address
if !address_geo.blank?
geo=Geokit::Geocoders::MultiGeocoder.geocode(address_geo)
errors.add(:address, "Could not Geocode address") if !geo.success
self.lat, self.lng = geo.lat,geo.lng if geo.success
end
end
# Checks whether this object has been geocoded or not. Returns the truth
def geocoded?
lat? && lng?
end
Et dans mon shops_controller.rb
:
def update
@shop = Shop.find(params[:id])
if @shop.update_attributes(params[:shop])
flash[:notice] = "Successfully saved."
redirect_to shop_path(@shop, :type => @shop.shop_type)
else
render :action => :edit
end
end
Maintenant, lorsque l'utilisateur crée d'abord l'entrée, l'adresse est géocodé, avec latitude et longitude enregistrées dans la base de données.
Mais lorsque l'utilisateur met à jour l'adresse, la latitude et la longitude ne seront plus géocodées, et donc toujours en utilisant l'ancienne latitude et longitude qui est la première sauvegarde.
Comment écrire pour que Rails répète le géocodage à chaque fois qu'une entrée est mise à jour?
Je ne peux pas dépendre seulement de l'adresse parce qu'il y a un bogue dans geokit qui quand j'essaye d'afficher plusieurs cartes basées sur l'adresse, seulement le dernier est montré.
J'utilise Geokit, gmaps, Google Maps ...
Merci.
Non, c'est pas l'adresse de l'utilisateur. C'est l'adresse d'un magasin. Disons qu'au départ l'adresse d'une boutique est enregistrée avec des informations sur la ville et le pays, le géocode sera basé sur cette ville et ce pays. Mais quand il est mis à jour avec une adresse plus précise avec le nom de la rue, alors le géocodage devrait mettre à jour la longitude et la latitude. – Victor