如何将javascript变量传递给rails erb
好的,我知道答案是AJAX调用,但我有一个特别的问题: 我的主页上的一切都分两步进行: 1-主要用户访问根“/” 2-在我的索引页上,我有一个JS,可以得到他的当前位置 (纬度和经度)并重新加载包含中信息的页面 没有用户交互的手-然后正确显示页面如何将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调用来执行此操作(我不想通过
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});