2

我在Rails項目中使用了驚人的gem gmaps4rails。它在我的本地機器上工作得很好,但是一旦部署在Heroku的Cedar堆棧上,javascript會在window.onload = function() { Gmaps.triggerOldOnload(); Gmaps.loadMaps(); };上拋出一個錯誤,抱怨gmaps上不存在triggerOldOnload。再次,它在本地工作正常。Gmaps4Rails Gmaps.triggerOldOnload方法未找到javascript錯誤

下面是其中出現錯誤的整個腳本塊:

<SCRIPT type="text/javascript" charset="utf-8"> 
Gmaps.map = new Gmaps4RailsGoogle(); 
Gmaps.load_map = function() { 
Gmaps.map.map_options.auto_adjust = true; 
Gmaps.map.initialize(); 
Gmaps.map.markers = [{"title":"Project 1","lat":18.71381,"lng":-72.35581}, {"title":"Project 2","lat":18.71567,"lng":-72.35603}]; 
Gmaps.map.markers_conf.do_clustering = true; 
Gmaps.map.create_markers(); 
Gmaps.map.adjustMapToBounds(); 
Gmaps.map.callback(); 
}; 
Gmaps.oldOnload = window.onload; 
window.onload = function() { Gmaps.triggerOldOnload(); Gmaps.loadMaps(); }; 
</SCRIPT> 

預先感謝尋找這結束了!

回答

3

我想你更新了寶石,但沒有重新運行該命令來複制你的應用程序的資產。

+0

我做到了,但它並沒有解決Heroku上的問題。我看到有一個比我有更新的版本,所以我要更新到最新版本,並從頭開始再次嘗試。我會公佈結果。 – David

+0

好吧,我更新了最新版本的gem,並再次執行'rails generate gmaps4rails:install.' gem繼續在我的開發環境中工作,並且繼續在生產中拋出javascript錯誤,因爲它無法找到triggerOldOnload方法。這真的是一個很棒的寶石,我很困惑它爲什麼會在生產中產生錯誤。 – David

+0

您是否重新編譯了您的資產?我擔心你會在某處存放一些緩存。 – apneadiving

2

升級gmaps4rails後,我遇到了類似的問題。

問題在於對生成的js文件的文件名和結構的更改。

在application.js中

現在有需要被包含在捆綁資產gmaps4rails.base.js。這是找不到的方法。

//= require gmaps4rails/gmaps4rails.base.js 

//= require gmaps4rails/googlemaps.js 

現在

//= require gmaps4rails/gmaps4rails.googlemaps.js 
0

您的里程可能會有所不同 - 我不知道你使用的是什麼版本的Rails或GMaps4Rails的,但是當我跑進這個問題與Rails 3.2.16/Gmaps4Rails v2(提交52d7161409a060ddeabc87aa3c10049adc5edd4d,根據說明here,在部分添加地圖Javascript

<script src="//maps.google.com/maps/api/js?v=3.13&sensor=false&libraries=geometry" type="text/javascript"></script> 
<script src="//google-maps-utility-library-v3.googlecode.com/svn/tags/markerclustererplus/2.0.14/src/markerclusterer_packed.js" type="text/javascript"></script> 
相關問題