2016-05-16 6 views
0

Ich benutze Gmaps4rails und Geocoder Edelstein, um alle übereinstimmenden aktuellen Standort aus der Datenbank anzuzeigen. Dies ist der Code vom Controller.gmaps4rails - Controller-Objekt leer in Sicht

def map_view 
    @users = User.where(city: params[:city]) 
    @hash = Gmaps4rails.build_markers(@users) do |user, marker| 
     marker.lat user.latitude 
     marker.lng user.longitude 
    end 
    respond_to do |format| 
     format.html 
     format.js 
    end 
    puts 'coordinates', @hash 
end 

Wenn ich versuche, das @hash Objekt in der Ansicht zu verwenden, ist das Objekt null.

<script type="text/javascript"> 
    handler = Gmaps.build('Google'); 
    handler.buildMap({ provider: {}, internal: {id: 'map_location'}}, function(){ 
    markers = handler.addMarkers(<%=raw @hash.to_json %>); 
    handler.bounds.extendWith(markers); 
    handler.fitMapToBounds(); 
    }); 
</script> 

Oben ist der Code in der Ansicht. Die Karte wird mit einem leeren Objekt angezeigt. Die Browserkonsole zeigt diesen Fehler an Uncaught RangeError: Maximale Aufrufstapelgröße wurde überschritten.

Wenn ich vom Controller aus drucke, ist das Objekt nicht null. Here is the output from the server.

Ich bin neu. Ich schätze Ihre Hilfe.

Antwort

0

Stellen Sie sicher, dass Sie keine nil Werte für marker.lat und marker.lng übergeben. Basiert auch von diesem forum, "In Ihrem json sollten Sie ersetzen: longitude mit lng und latitude mit lat." Überprüfen Sie dies in Bezug issue on GitHub.

+0

Die übergebenen Werte sind nicht "nil". Ich vermute, das Problem ist, nachdem der Wert in 'lat' und' long' übergeben wurde. – mbd