在javascript函数中设置ruby实例变量

Set ruby instance variable inside javascript function

本文关键字:ruby 实例 变量 设置 javascript 函数      更新时间:2023-09-26

我试图将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

您不了解代码在何时何地运行。

Ruby(在Rails上,或其他)在服务器上运行。它创建HTML+JS+任何通过互联网发送到客户端的内容。

客户端(web浏览器)接收此代码,并执行JavaScript代码。

因此,你不能让你的Ruby变量被设置为运行JavaScript代码的结果,而不再次联系web服务器。

您需要使用AJAX(或其他一些较低的技术)在调用该函数时将请求发送回web服务器。

例如(使用jQuery的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