2013-04-18 2 views
0

Пожалуйста, помогите мне преодолеть эту проблему.
У меня есть база данных, в которой хранятся некоторые пункты Карт Google (lat, lng), и я хочу отображать их на Картах Google.
Вот мой контроллерДобавить маркер в Картах Google - Ruby on Rails

@location = SharedInfo.all 

Вот Javascript ввиду

function DisplayTraficCir(loca) { 
for (var location in loca){ 
    var myLatLng = new google.maps.LatLng(location.latitude,location.longitude) 
    var marker = new google.maps.Marker({ 
    position: myLatLng, 
    map: map 
    }); 
} 
// map.setCenter(location); 
} 

Я назвал эту функцию:

DisplayTraficCir(<%@location%>); 

Я не знаю, почему он не работает. Возможно, он не выполняет код внутри внутри оператора for.
Спасибо за помощь.

ответ

0

API Карт не является API-интерфейсом Ruby. Это JavaScript API.

Вы говорите, что вы вызываете функцию JavaScript, как это:

DisplayTraficCir(<%@location%>); 

Но это не так. Это ваш код Ruby, а не код JavaScript.

Вы пытаетесь отлаживать сразу две проблемы. Вместо этого отлаживайте одну проблему за один раз:

  1. Как получить API Карт, работающий с JavaScript, CSS и HTML. Ruby, Rails и ваш код сервера не связаны с этим вообще.

  2. Как только вы работаете с JavaScript, CSS и HTML-кодом, как сгенерировать этот код из Rails.

Другими словами, для отладки кода JavaScript, посмотрите на JavaScript код, а не код Ruby, который генерирует его.

Вы можете отлаживать код JavaScript с помощью инструментов разработчика в любом браузере. Chrome особенно хорош. Одна простая вещь, чтобы сделать это немедленно вставить это заявление перед вызовом функции в вопросе:

debugger; 

Затем загрузите страницу с инструментами разработчика Chrome открытым, и он остановится в отладчике JavaScript в этой строке. Затем вы можете посмотреть на переменные, посмотреть на фактический код, который видит браузер, проследить его код за строкой и всевозможные хорошие вещи.

При этом забыть полностью о вашем коде Rails. На данный момент это не имеет никакого отношения. Браузер никогда не видит этот код, все, что он видит, это JavaScript , сгенерированный вашим кодом Ruby.

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

+0

Может ли это передать экземпляр «@location» в функции «DisplayTraficCir (...);», Майкл Гири? –

+0

'@ location' - это код Ruby. Это не JavaScript.Забудьте о коде Ruby, когда вы отлаживаете свой JavaScript, и вместо этого посмотрите на фактический код JavaScript, который видит браузер. Вы не найдете '@ location' в браузере или, по крайней мере, не должны. Код JavaScript, загруженный в браузер, - это единственное, что имеет значение, а не код Ruby, который его генерирует. Вы можете использовать инструменты разработчика в Chrome или других браузерах для проверки этого кода JavaScript. –

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