2013-05-01 31 views
0

我有我的Ruby項目文件夾中的文件scripts.js中 - 資產/ JavaScript的,在我試圖呈現一個谷歌地圖。我無法讓我的JavaScript瞭解嵌入的ruby標籤之間的代碼。我應該怎麼做?我覺得像類似的scripts.js中的頁面的頂部聲明的變量會工作,會出現:嵌入式紅寶石JavaScript字符串問題

var map_latitude = <%= @user.lat %>; 
var map_longitude = <%= @user.lng %>; 

這裏是我的代碼(問題是,5日線):

var map; 
    var markers = []; 

    function initialize_google_maps() { 
    var currentlatlng = new google.maps.LatLng(<%= @user.lat %>, <%= @user.lng %>); 
    var zoom = <%= @kms_range %> > 9 ? 9 : 10; 
    var myOptions = { 
     zoom: zoom, 
     center: currentlatlng, 
     mapTypeId: google.maps.MapTypeId.ROADMAP, // ROADMAP, SATELLITE, HYBRID 
     streetViewControl: false 
    }; 
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 

    var marker = new google.maps.Marker({map: map, position: currentlatlng, icon:{oppacity:0}}); 
    map.setCenter(currentlatlng); 
    map.setZoom(zoom); 

    var circle = new google.maps.Circle({ 
     map: map, 
     fillOpacity: 0, 
     strokeWeight: 2, 
     strokeOpacity: 0.7, 
     radius: <%= @kms_range %>*1000, 
    }); 
    circle.bindTo('center', marker, 'position'); 

    } 

    function show_markers() { 
    if (markers) 
     for(i in markers) { 
     markers[i].setMap(map); 
     } 
    } 

    function add_marker(location) { 
    marker = new google.maps.Marker({ 
     position: location, 
     map: map 
    }); 
    markers.push(marker); 
    // markers.setVisible(false); 
    } 

    function initialize_markers() { 
    <% (@reviews || []).each do |r| %> 
     <% next unless r.lat && r.lng %> 
     position = new google.maps.LatLng(<%= r.lat %>, <%= r.lng %>); 
     add_marker(position); 
    <% end %> 
    } 

    $(function() { 
    initialize_google_maps(); 
    initialize_markers(); 
    show_markers(); 
    }); 

我會很感激任何幫助,謝謝。

回答

0
var map_latitude = "<%= @user.lat %>"; 
var map_longitude = "<%= @user.lng %>"; 

看看生成的JavaScript,你可能已經錯過了引號。

而且,如果它是一個字符串,你可以做

var map_latitude = <%= p @user.lat %>; 
var map_longitude = <%= p @user.lng %>; 

但從來沒有看到這個在代碼

+0

之前我在哪裏聲明這些變量?因爲如果我把它們放在我的scripts.js中文件的頂部,我的地圖仍然不承認紅寶石值。在Chrome中,如果我CONSOLE.LOG(map_latitude)我得到返回<%= atuser.lat%>,在那裏我應該得到一個動態的緯度值。謝謝。 – CHarris 2013-05-01 14:45:22

+0

的@user變量將需要加載比你javacript首先得到執行,併爲@MrYoshiji指出,您的文件必須以'.erb'結束 – fotanus 2013-05-01 15:00:20