2014-06-10 1 views
0

Я хочу показать некоторые координаты на карте Google, он отлично работает, чтобы получить его из текстового файла, но я не знаю, как получить доступ к координатам из базы данных.Как вызвать базу данных с javascript в приложении Rails?

Вот код работает с текстовым файлом:

<script type="text/javascript"> 

     var map; 
     var markers = []; 

     var mon_fichier = fichier_txt("file.txt"); 
     var elem = mon_fichier.split(','); 
     var tHandleMajActors; // Handle timer majActeurs() 

     function initialize() { 
      var haightAshbury = new google.maps.LatLng(elem[0], elem[1]); 
      var mapOptions = { 
      zoom: 6, 
      center: haightAshbury, 
      mapTypeId: google.maps.MapTypeId.TERRAIN 
      /*mapTypeId: google.maps.MapTypeId.SATELLITE*/ 
      }; 
      map = new google.maps.Map(document.getElementById('map-canvas'), 
       mapOptions); 

      //run realtime view 
      RTrun(); 
     } 

     //RT MENU MANAGEMENT 
     function RTrun(){ 
      movePositionMarker(); 
     } 

     //RT MARKER MANAGEMENT 
     function movePositionMarker(){   //XXX timer 
      var mon_fichier = fichier_txt("file.txt"); 
      var elem = mon_fichier.split(','); 
      i=0;  
      while (i<elem.length) { 
       var myPosition = new google.maps.LatLng(elem[i], elem[i+1]); 
       i=i+2; 
       addMarker(myPosition); 
      } 
      //timer: every 10 s 
      tHandleMajActors = setTimeout(function(){ 
       movePositionMarker(); 
       }, 10000); 
     } 

     // Add a marker to the map and push to the array. 
     function addMarker(location) { 
      var image = 'images/flag.png'; 
      var marker = new google.maps.Marker({ 
      //animation: google.maps.Animation.DROP, 
      position: location, 
      map: map, 
      icon: image 
      }); 
      markers.push(marker); 
     } 

таблица, из которой я хочу взять координаты, называются координаты и имею: широта, долгота, дата, Время,: tracker_id

Благодарим за помощь!

+0

Вы уже используете jquery? –

ответ

2

Вы не можете напрямую обращаться к базе данных с помощью javascript, как на другой машине (сервере) в браузере. Вам нужно вызвать действие в своем приложении, которое вернет нужные вам данные.

В этом случае вы хотите получить данные в формате json, поэтому javascript может перевести это прямо в реальный объект javascript.

Вы можете решить, какое действие должно вернуть данные. В этом случае, если это данные для одного объекта Coordinate, имеет смысл иметь действие CoordinatesController # show. Это должно быть настроено так:

def show 
    @coordinate = Coordinate.find(params[:id]) 
    respond_to do |format| 
    format.html #defaults to rendering the /view/coordinates/show template 
    format.json { render json: @coordinate } 
    end 
end 

Итак, это рельсы, отсортированные по полю.

Следующая вещь - вызвать вышеупомянутое действие из вашего javascript. Я собираюсь сделать это с помощью jquery, так как это просто проще.

$.ajax({ 
    url: "/coordinates/"+coordinate_id, 
    dataType: "json", 
    success: function(data){ 
    //data is the data you got from the server, do something with it 
    } 
}); 

В этом примере вам необходимо знать идентификатор объекта координат, чтобы передать его.

+0

отлично работает! благодаря – yolo

Смежные вопросы