J'essaye d'employer Geocoder pour remplir la latitude et la longitude pour une adresse donnée d'un restaurant entré par l'utilisateur. Ma page show me donne l'erreur suivante:NoMethodError dans la vue #show. Méthode non définie 'latitude'. Geocoder pour obtenir lat et long
NoMethodError in Restaurants#show
undefined method `latitude' for #<Restaurant:...
J'ai couru:
$rails generate latlong migration latitude:float longitude:float
$rake db:migrate
J'ai mis à jour le restaurant params pour inclure la latitude et la longitude.
La partie référencement URL dans le fichier show ressemble à ceci:
<p>
<strong>Where's it at?</strong>
<%= image_tag "http://maps.google.com/maps/api/staticmap?size=450x300&sensor=false&zoom=16&markers=#{@restaurant.latitude}%2C#{@restaurant.longitude}" %>
</p>
Voici mon fichier Migrate:
class Latlong < ActiveRecord::Migration
def change
add_column :restaurants, :latitude, :float
add_column :restaurants, :longitude, :float
end
end
et mon modèle ressemble à ceci:
class Restaurant < ActiveRecord::Base
mount_uploader :picture, PictureUploader
mount_uploader :menu, MenuUploader
geocoded_by :address
after_validation :geocode
end
Merci - J'ai d'autres params associés au restaurant (adresse, numéro de téléphone, etc.) Est-ce que le rollback, les effacer aussi? ou seulement le dernier migrate? – jpn
Si la mauvaise migration (avec Geo) est votre dernière migration, vous pouvez exécuter 'rake db: rollback STEP = 1' pour annuler uniquement la dernière migration que vous avez effectuée. – RedZagogulin
Et aussi (pour une meilleure compréhension de Geocoder gem) lire [this] (http://railscasts.com/episodes/273-geocoder?view=asciicast). – RedZagogulin