ROR:如何在不重新加载浏览器的情况下从控制器获取参数?

时间:2016-05-17 15:57:25

标签: javascript ruby-on-rails ruby google-maps-api-3

我现在正在使用一些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>

在视图中还有更多内容,但就像我希望它与点击或其他内容更新一样。

1 个答案:

答案 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