我正在尝试将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。
答案 0 :(得分:12)
您不了解代码运行的位置和时间。
Ruby(在Rails上,或其他方式)在服务器上运行。它创建HTML + JS +通过Internet发送给客户端的任何内容。
客户端(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