2017-12-06 3 views
-1

Ich versuche, geografische Breite und Länge von Adresse zu bekommen, aber wenn ich Schienen db laufen: Samen Breiten- und Längen bleiben leer und der Rest der Felder wirdIrgendwelche Ideen, wie man Geocoder mit Schienen 5 einrichtet?

hier ist mein Modell

attr_accessor :lat, :lng 
    geocoded_by :address, :latitude => :lat, :longitude => :lng 
    after_save :geocode, if: ->(building){ building.address.present? } 

und entkernt werden ich habe Juwel 'Geocoder' in GemFile

My Rails version 5.0.6 
    and ruby version 2.4.1 

Hinweis: ich brauche nur zu verwenden 'Geocoder' Juwel Das ist alles was ich habe, dank im Voraus

+0

Wie sieht Ihr Datenbankschema für dieses Modell aussehen? Gibt es in dieser Tabelle eine Spalte "lat" und "lng"? – spickermann

+0

Ja, ich habe sowohl lat als auch lng. ihr Typ ist Float – Hindreen

Antwort

2

after_save bedeutet, dass Geocodierung ausgeführt wird, nachdem der Datensatz in der Datenbank gespeichert wurde und daher die Geocodierungsinformationen selbst nicht in der Datenbank gespeichert werden.

Außerdem überschreibt attr_accessor :lat, :lng die Getter- und Setter-Methoden, die von Rails für die Datenbankspalten lat und lng bereitgestellt werden.

Ändern Sie einfach Ihren Code:

# remove this line: attr_accessor :lat, :lng 
geocoded_by :address, :latitude => :lat, :longitude => :lng 
before_save :geocode, if: ->(building){ building.address.present? } 
+0

Vielen Dank, du hast meine Nacht gerettet :) – Hindreen

Verwandte Themen