【问题标题】:Set ruby instance variable inside javascript function在javascript函数中设置ruby实例变量
【发布时间】:2013-03-25 03:27:37
【问题描述】:

我正在尝试将 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。

【问题讨论】:

  • 顺便说一句,您的代码已将“纬度”拼写为“纬度”。

标签: javascript html ruby-on-rails ruby


【解决方案1】:

您不了解代码运行的地点和时间。

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

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

【讨论】:

  • 谢谢你,这解决了我的问题。
猜你喜欢
  • 2018-03-01
  • 2010-10-24
  • 2014-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-18
  • 2012-01-07
  • 2012-06-07
相关资源
最近更新 更多