我在我的Rails應用中使用Google Places API進行自動填充,但我無法每次都使用它。每次載入表單所在的頁面時,就像一個骰子一樣:有時候JS會起作用,有時卻不起作用。Rails應用程序中的Google地方信息自動填充功能不可靠
順便說一句,我有幾個其他的JavaScript也有時無法工作,但谷歌自動完成的那些是最古怪的,他們是任務關鍵。
下面是設置:
1°我的HTML標題有:
<%= javascript_include_tag "application", "data-turbolinks-track" => true %>
<%= yield :javascript_includes %>
然後在我的身上,我有content_for
標籤粘貼在頭部
<% content_for :javascript_includes do %>
<%= javascript_include_tag "application", "https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&libraries=places" %>
<script type="text/javascript">
function initializeAutocomplete(){
var input = document.getElementById('offer_location');
var options = {
types: ['(cities)']
};
var autocomplete = new google.maps.places.Autocomplete(input, options);
google.maps.event.addListener(autocomplete, 'place_changed', function() {
var place = autocomplete.getPlace();
var lat = place.geometry.location.lat();
var lng = place.geometry.location.lng();
$('#offer_latitude').val(lat)
$('#offer_longitude').val(lng)
});
}
google.maps.event.addDomListener(window, 'load', initializeAutocomplete);
</script>
<% end %>
產生我曾經在一個單獨的.js文件中使用initializeAutocomplete腳本,該文件通過資產管道加載,但得到了類似的結果:自動完成工作的時間僅爲t他的時間...(其實我覺得它失敗的更經常)
我認爲這個問題與何時加載不同的元素以及何時觸發回調有關。這裏是的東西例子我試圖改變:
使用
$(window).load
和$(document).ready
代替addDomListener(window, 'load', initializeAutocomplete)
把腳本在資產管道(加載單獨
google-autocomplete.js
文件意味着它被載入前鏈接到content_for
標記中提供的API將腳本放在單獨的
google-autocomplete.js
文件中,該文件不包含在資產管道中,並在API鏈接之後立即調用標籤content_for
標籤
非常感謝您的幫助!
- 編輯 -
在事實證明,這是turbolinks搞亂了我的jQuery的觸發器,特別是一個爲谷歌自動完成結束。找到答案there與我固定所有我的JS。
我有同樣的問題 - 這個工作對我來說http://ubilabs.github.io/geocomplete/examples/simple.html – 2014-09-05 11:44:28
待辦事項你知道它究竟做了什麼? – user3778624 2014-09-05 15:10:47
您在項目中使用Turbolinks嗎? 如果您的腳本在第一次加載頁面時起作用,但是當您使用網站中其他頁面的鏈接導航到該腳本時,則可能是因爲Turbolinks! – 2014-09-08 13:00:51