2016-12-09 8 views
0

У меня есть приложение с помощью API Google Maps жемчужиныПри пересматривает домашнюю страницу, GMaps не перезагружается

gem 'gmaps4rails' 

У меня есть карты на домашней странице. Страница загружается отлично, когда она сначала загружается, а затем переходите на другую страницу, загружаемую содержимое этой страницы, но когда я возвращаюсь на домашнюю страницу, предыдущий контент остается и карта не загружается. Если вы вручную обновляете страницу, она загружается нормально.

Я уверен, что это простая ошибка, которую мне не хватает, как мне получить страницу для обновления, когда я ее пересматриваю?

Моего домашняя страница код с скриптами здесь

<div style='width: 400px;'> 
     <div id="map" style='width: 400px; height: 400px;'></div> 
    </div> 

    <script src="//maps.google.com/maps/api/js?key="" + ENV['GOOGLE_API_KEY']></script> 
    <script src="//cdn.rawgit.com/mahnunchik/markerclustererplus/master/dist/markerclusterer.min.js"></script> 
    <script type="text/javascript"> 
    handler = Gmaps.build('Google'); 
    handler.buildMap({ provider: {}, internal: {id: 'map'}}, function(){ 
     markers = handler.addMarkers([ 
     { 
      "lat": -32.023598, 
      "lng": 115.859690, 
      "picture": { 
      "width": 32, 
      "height": 32 
      }, 
      "infowindow": "hello!" 
     } 
     ]); 
     handler.bounds.extendWith(markers); 
     handler.fitMapToBounds(); 
     handler.getMap().setZoom(16); 
    }); 
    </script> 

Я нашел несколько ответов, которые были отчасти похожи, но я не мог получить этот вопрос решен.

+0

Спасибо за ответ, это не перезагружается, даже если вы нажмете на дом (root_path) ссылка. Когда вы перемещаетесь, вы открываете страницу и совершенствуете ее, щелкаете на другой странице, и она загружается нормально, а затем нажмите на домашнюю ссылку, и она не перезагружается. –

ответ

0

Проблемы - это турболинк.

Отключить turbolink на всех link_to страницы имеет карту или удалить требует turbolink на вас app/assets/javascripts/application.js

Пример:

<%= link_to('HOME', root_path, 'data-no-turbolink' => true) %> 
+0

Я отключил turbolinks, и это сработало, однако, когда я попробовал вариант link_to, это не имело никакого значения. Есть ли последствия от использования турбовинтовых двигателей? –

+0

Turbolink использовался для кэширования js. В этом случае js на карте была загружена, и она больше не загружается. Это причина того, почему при нажатии ссылки на => карта не отображается, а когда отображается страница reload page => map. Отключить турболинк не влияет на ваше приложение. –

1

Вы можете использовать пустой анонимный onunload = function(){} в своем JavaScript на странице, на которой вы хотите перезагрузить код, а затем кеш должен очиститься до перезагрузки страницы.

+0

Спасибо за ответ, где о чем я его помещаю, и я просто помещаю его как напечатанный или я что-то помещаю внутри {}? –

+0

Пустой, как в примере. – PHPglue