2013-03-25 79 views
2

我想設置一個ruby實例變量的值爲緯度和經度值。 你將如何設置一個JavaScript函數內的實例變量的值?設置JavaScript函數裏面的ruby實例變量

這樣的事情?

<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

順便說一句,你的代碼拼寫爲 「緯度」 爲 「latidude」。 – Phrogz 2013-03-25 03:37:57

回答

12

您不瞭解代碼的運行位置和時間。

Ruby(on Rails或其他)在服務器上運行。它創建HTML + JS +,無論通過Internet發送到客戶端。

客戶端(網絡瀏覽器)接收此代碼,並執行JavaScript代碼。

因此,您不能將您的Ruby變量設置爲運行JavaScript代碼的結果......而無需再次聯繫Web服務器。

當需要調用該函數時,您需要使用AJAX(或其他一些較小的技術)將請求發送回Web服務器。

例如(使用jQueryjQuery.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

謝謝,那個awnsers是我的問題。 – user2002525 2013-03-25 03:53:12