2015-12-25 60 views
3

我正在一个应用程序中存储在数据库中的项目显示在谷歌地图上。为此我添加了gmap.js.erb文件到app/assets/javascripts文件夹。项目是由相应的表中取出,并通过以下方式把上图:Ruby生成的JavaScript文件没有更新页面刷新

function showItemsOnMap() { 
    <% Item.all.each do |item| %> 
    var lat = <%= item.lat %>; 
    var lng = <%= item.lng %>; 
    addMarker(lat, lng); 
    <% end %> 
} 

能正常工作和项目正常显示,但是当我添加一个新的项目,并刷新我的地图页面,新添加的项不显示。在更改数据库并单击刷新后,gmap.js.erb未更新。我想仅仅点击浏览器中的刷新按钮就不足以触发gmap.js.erb更新。我应该怎么做?如何在物品表被修改时更新gmap.js.erb

+0

是什么您控制台登录/网络面板说呢?你有304(未修改)的回应?应该添加项目后是否有可能发生的错误? – Blauharley

+0

你关闭了Turbolinks吗? http://blog.steveklabnik.com/posts/2013-06-25-removing-turbolinks-from-rails-4并重新启动 – Kalman

+0

@卡尔曼关闭Turbolinks没有帮助。 –

回答

3

您的gmap.js.erb被编译为gmap.js并在使用此js文件的第一个页面请求时被缓存。您可以将这些js放在视图中以使其成为动态脚本。

view.html.erb

<script> 
function showItemsOnMap() { 
    <% Item.all.each do |item| %> 
    var lat = <%= item.lat %>; 
    var lng = <%= item.lng %>; 
    addMarker(lat, lng); 
    <% end %> 
} 
</script> 
+0

谢谢!我接受你的答案。 –