我现在正在使用一些gmaps API,并通过lat并登录gem" gon"。由于我希望标记是最新的,我需要最新的lat和log。如何在不重新加载整个页面的情况下将params从控制器传递给view.html?
controller.rb
@targetrecords.each do |targetrecords|
pnts[i][0]=targetrecords.latitude
pnts[i][1]=targetrecords.longitude
pnts[i][2]=targetrecords.address
pnts[i][3]=targetrecords.created_at
end
gon.pnts=pnts
index.html.erb
<script type="text/javascript">
var centlat = (gon.pnts[0][0]+gon.pnts[1][0]+gon.pnts[2]
[0]+gon.pnts[3][0])/4;
var centlng = (gon.pnts[0][1]+gon.pnts[1][1]+gon.pnts[2]
[1]+gon.pnts[3][1])/4
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 14,
center: new google.maps.LatLng(centlat,centlng),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
</script>
在视图中还有更多内容,但就像我希望它与点击或其他内容更新一样。
答案 0 :(得分:1)
使用gem gon,如果您正确地按照设置进行操作,则可以在控制器中执行此操作:
def your_action
gon.your_variable = your_ruby_variable
end
现在您可以在javascript中访问它了。要试一试,你可以这样做:
console.log(gon.your_variable)
,您应该可以在浏览器的控制台中看到它。
您也可以使用ajax请求,但由于您询问了gon,这应该可以。
编辑:要在第一页加载后获取更新,您可以使用gon watch https://github.com/gazay/gon/wiki/Usage-gon-watch