在JavaScript函数中设置Ruby实例变量

3

我正在尝试将 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
顺便提一下,你的代码把“latitude”拼成了“latidude”。 - Phrogz
1个回答

13

你没有理解代码在何时何地运行。

Ruby(无论是Rails还是其他)在服务器上运行。它创建HTML+JS+其他内容并通过互联网发送到客户端。

客户端(Web浏览器)接收此代码,并执行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

谢谢,这回答了我的问题。 - user2002525

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接