0

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 

Répondre

1

Vous avez fait une mauvaise migration, donc:

  • Exécuter rake db:rollback - pour revenir en arrière et avoir propre DB.
  • Exécuter rails g migration AddLatitudeAndLongitudeToRestaurants latitude:float longitude:float - migration appropriée (en raison de la documentation gem vous devez ajouter de nouvelles colonnes au modèle existant, ne pas créer presque table séparée et nouvelle dans DB).
  • Exécuter rake db:migrate.
+0

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

+0

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

+0

Et aussi (pour une meilleure compréhension de Geocoder gem) lire [this] (http://railscasts.com/episodes/273-geocoder?view=asciicast). – RedZagogulin

Questions connexes