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

时间:2013-03-25 03:27:37

标签: javascript html ruby-on-rails ruby

我正在尝试将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 个答案:

答案 0 :(得分:12)

您不了解代码运行的位置和时间。

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

客户端(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