我想在我的Rails应用中实现Pjax和Google Map,并且我在重新加载JavaScript代码时遇到了问题。
我的layout / application.html.erb是这样的:
<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所在的文件是这样的:
<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是链接到列表的标记数组。它在清单控制器中定义,因此移动此javascript代码很困难。
此文件的JavaScript代码仅在我重新加载此特定页面时起作用,并且在我更改页面时它不会消失。
所以我的问题是: 是否可以使用Pjax系统在特定页面上调用包含某些ruby信息的JavaScript代码?
答案 0 :(得分:1)
只需在pjax的成功函数中加载你的javascript。
答案 1 :(得分:0)
好的,我会解释更多有关解决方案的信息。 :)
在PJAX中,大部分时间它都没有加载包含在pjax函数外部的Jquery或js,但是相同。所以我们必须使用将该js文件加载到pjax函数的成功函数中$ getScript(&#39;你的js fle&#39;);
这样当pjax获取新的页面内容时,插件也会加载并包含。