如何将javascript变量传递给rails erb

如何将javascript变量传递给rails erb,javascript,jquery,ruby-on-rails,ruby,ajax,Javascript,Jquery,Ruby On Rails,Ruby,Ajax,好的,我知道答案是AJAX调用,但我有一个特别的问题: 我的主页上的一切都分两步进行: 1-主要用户访问根“/” 2-在我的索引页上,我有一个JS,可以得到他的当前位置 (纬度和经度)并重新加载包含中信息的页面 没有用户交互的手-然后正确显示页面 问题:我不知道如何进行ajax调用来执行此操作(我不想通过window.location重新加载所有布局),我只需要index.html.erb,明白吗?但是这太难了,老兄,我已经做了一个月了,不能做了:(请,有人帮帮我,我真的需要。非常感谢。当你检索

好的,我知道答案是AJAX调用,但我有一个特别的问题: 我的主页上的一切都分两步进行:

1-主要用户访问根“/”

2-在我的索引页上,我有一个JS,可以得到他的当前位置 (纬度和经度)并重新加载包含中信息的页面 没有用户交互的手-然后正确显示页面


问题:我不知道如何进行ajax调用来执行此操作(我不想通过
window.location
重新加载所有布局),我只需要index.html.erb,明白吗?但是这太难了,老兄,我已经做了一个月了,不能做了:(请,有人帮帮我,我真的需要。非常感谢。

当你检索当前位置时,你有一个Javascript回调,告诉你一切都完成了。在这个回调中,你可以访问Javascript中的位置,对吗

然后,您可以在Rails应用程序中将AJAX请求发布到路由。例如:

routes.rb


发布“/用户位置”=>“位置更新”

位置控制器.rb

class PositionController < ApplicationController
   def update
     puts params
     # here store the params in your db, or do whatever you want
   end
end

您无需触摸控制器即可完成此操作。在
erb
文件中,类似的操作可能会起作用:

<script>
  if (<%=params[:geo_location].blank? ? 'true' : 'false' %>) {
    locationData = DO_YOUR_THING_HERE;
    $.get('/', { geo_location: locationData});
  }
</script>

并设置一个新的控制器路径,以仅返回您感兴趣的部分HTML。您可以在控制器操作中使用
render'index',layout:false
来实现这一点。

您几乎做到了,问题是用我的控制器中的数据重新加载页面;rails可以完成所有操作,甚至渲染页面,但不显示(需要一个json命令来更新浏览器中的数据)
<script>
  if (<%=params[:geo_location].blank? ? 'true' : 'false' %>) {
    locationData = DO_YOUR_THING_HERE;
    $.get('/', { geo_location: locationData});
  }
</script>
$('#container').load('/A_NEW_CONTROLLER_PATH', {geo_location: locationData});