2016-03-22 5 views
2

Ich möchte Pjax und Google Map in meiner Rails App implementieren und ich habe ein Problem mit dem Neuladen meiner JavaScript-Codes.Pjax und Neuladen von JavaScript auf einer bestimmten Seite

Mein Layout/application.html.erb ist wie folgt:

<body> 
    <%= render 'shared/navbar' %> 
    <%= render 'shared/flashes' %> 
    <div id="pjax-container"> 
    <%= yield %> 
    </div> 
    <%= render 'shared/footer' %> 

    <%= javascript_include_tag "https://maps.google.com/maps/api/js?key=******************************" %> 
    <%= javascript_include_tag "https://google-maps-utility-library-v3.googlecode.com/svn/tags/markerclustererplus/2.0.14/src/markerclusterer_packed.js" %> 

    <%= javascript_include_tag "application" %> 

    <%= yield(:after_js) %> 
</body> 

und die Datei, wo meine Karte Inserate/index.html.erb ist wie folgt aus:

<div id="map" style="width: 100%; height: 300px;"></div> 

<% content_for(:after_js) do %> 
    <%= javascript_tag do %> 

    $(document).on('ready', function() { 
     handler = Gmaps.build('Google'); 
     handler.buildMap({ internal: { id: 'map' } }, function(){ 
     markers = handler.addMarkers(<%= raw @markers.to_json %>); 
     handler.bounds.extendWith(markers); 
     handler.fitMapToBounds(); 
     }); 
    }) 
    <% end %> 
<% end %> 

@markers ist ein Array des Markers, der mit einer Liste verknüpft ist. Es ist im Listings Controller definiert, daher ist es schwierig, diesen JavaScript-Code zu verschieben.

Der JavaScript-Code dieser Datei funktioniert nur, wenn ich diese bestimmte Seite neu lade, und es verschwindet nicht, wenn ich die Seite ändere.

Also meine Frage ist: Ist es möglich, einen JavaScript-Code, der einige Ruby-Informationen enthält, auf einer bestimmten Seite mit dem Pjax-System aufzurufen?

Antwort

1

Laden Sie einfach Ihr Javascript in die Erfolgsfunktion von pjax.

+1

Dies erklärt nicht wirklich, wie man das macht. Könnten Sie das näher ausführen? –

+0

Ja, tatsächlich habe ich etwas schwieriger (rufen Sie die Funktion mit einem Link und einem Remote: True), aber dieses ist besser (und ich habe jetzt ein besseres Verständnis von Pjax;)) –

+0

@hugohowchoong;) Ja .. PJAX ist das beste Plugin, um dynamische Inhalte anzuzeigen, ohne Seite zu laden .. :) viel Spaß beim Codieren;) – Kannan

0

okay, ich werde mehr über die Lösung erklären. :)

in PJAX, die meiste Zeit es lädt nicht die Jquery oder js, die außerhalb der pjax-Funktion enthalten ist, aber in derselben. also müssen wir diese js-Datei in die Erfolgsfunktion der pjax-Funktion laden mit

$ getScript ('Ihre js fle');

so dass wenn pjax neuen Seiteninhalt holen dann das Plugin auch geladen und enthalten.

Verwandte Themen