Функция JavaScript, вызываемая из Rails: не загружается весь параметр - PullRequest
0 голосов
/ 17 июня 2011

это моя проблема.Из рельсов я вызываю функцию:

<body onload="initialize(<%= @segnalazione.id %>,<%= @segnalazione.dove %>); ">

, где @ segnalazione.dove похож на "(lat, lng)".

В вызываемой функции карта не загружается, потому что половина coodзагружен.Если я запускаю «alert (ordin);»Я получаю только «Инг».Почему?

function initialize(id,coord) {
        var myOptions = {
            zoom: 11,
            center: coord,mapTypeId:google.maps.MapTypeId.ROADMAP,draggableCursor:'pointer'
            }
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

Ответы [ 2 ]

1 голос
/ 17 июня 2011

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

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

<body onload="initialize(<%= @segnalazione.id %>, '<%= @segnalazione.dove %>'); ">

(Обратите внимание на новые одинарные кавычки вокруг тега @segnalazione.dove ERb. Это необходимо, если @segnalazione.dove является строкой вместо, скажем, целого числаили другой литерал JavaScript.

0 голосов
/ 17 июня 2011

Проблема в <body onload="initialize(<%= @segnalazione.id %>,<%= @segnalazione.dove %>); ">, если @segnalazione.dove расширяется до (lat, lng) оператор запятой внутри скобок заставит (lat, lng) оценить до lng.Вы не можете использовать "()", как вы видели, чтобы использовать его, выберите {lat: lat, lng: lng} (как объект) или [lat, lng] (как массив).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...