2016-03-22 26 views
2

RailsアプリケーションにPjaxとGoogle Mapを実装したいのですが、JavaScriptコードの再読み込みに問題があります。Pjaxと特定のページでJavaScriptを再読み込み

マイレイアウト/ application.html.erbは、このようなものです:

<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:

<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> 

と私のマップリスト/ index.html.erbあるファイルは、このようなものですリストにリンクされたマーカーの配列です。これはListingsコントローラで定義されているので、このjavascriptコードを移動するのは難しいです。

このファイルのJavaScriptコードは、このページをリロードすると動作し、ページを変更すると消えません。

私の質問は: Pjaxシステムで特定のページにいくつかのルビー情報を含むJavaScriptコードを呼び出すことは可能ですか?

答えて

1

pjaxのsuccess関数でjavascriptを読み込むだけです。

+1

これは本当にその方法を説明していません。あなたは詳しく説明できますか? –

+0

実際には、私はもっと難しいことをしました(リンクとリモートで関数を呼び出す:true)が、これはより良い(と私は今、pjaxのより良い理解を持っている)) –

+0

@hugohowchoong;)ええ.. PJAX isページを読み込まずに動的コンテンツを表示するための最高のプラグイン.. :)コーディングを楽しむ;) – Kannan

0

大丈夫私は解決策についてもっと詳しく説明します。 :)

のPJAXでは、ほとんどの場合、pjax関数の外側に含まれるJqueryまたはjsはロードされませんが、同じです。したがって、jsファイルをpjax関数の成功関数にロードする必要があります。

$ getScript( 'Your js fle');

したがって、pjaxが新しいページコンテンツを取得するときに、プラグインもロードされ、含まれます。

関連する問題