2013-03-25 2 views
2

Я пытаюсь установить значение переменной экземпляра ruby ​​для значений широты и долготы. Как бы вы установили значение переменной экземпляра внутри функции javascript?Установить переменную экземпляра ruby ​​внутри функции javascript

Что-то вроде этого?

<script> 
    if (geoPosition.init()){ geoPosition.getCurrentPosition(geoSuccess, geoError); } 

    function geoSuccess(p) { 
     <% @lat_lng = p.coords.latidude + "," + p.coords.longitude %> 
    } 

    function geoError(){ alert("No Location: Won't be able to use Maps functionality"); } 
</script> 

Что-то говорит мне, что мне нужен json.

+1

BTW, ваш код пишется "широта", как "latidude". – Phrogz

ответ

12

Вы не понимаете, где и когда код запускается.

Ruby (на Rails или иным образом) работает на сервере. Он создает HTML + JS + все, что отправляется через Интернет клиенту.

Клиент (веб-браузер) получает этот код и, среди прочего, выполняет код JavaScript.

Вы не можете установить переменные Ruby в результате запуска кода JavaScript ... без повторного обращения к веб-серверу.

Чтобы отправить запрос на веб-сервер при вызове этой функции, вам необходимо использовать AJAX (или другую, более низкую технологию).

Например (с использованием jQuery «s jQuery.post):

function geoSuccess(p){ 
    $.post('/newcoords',{lat:p.coords.latitude, long:p.coords.longitude}); 
} 

и в какой-то контроллер где-то:

def newcoords 
    @lat_lng = [params[:lat],params[:long]].join(",") 
end 
+0

Спасибо, что меня интересует мой вопрос. – user2002525

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