【问题标题】:Ruby generated javascript file is not updated on page refreshRuby 生成的 javascript 文件在页面刷新时未更新
【发布时间】:2015-12-25 18:11:42
【问题描述】:

我正在开发一个应用程序,其中存储在数据库中的项目显示在 Google 地图上。为此,我将gmap.js.erb 文件添加到app/assets/javascripts 文件夹。从相应的表中取出项目并按以下方式放在地图上:

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 更新是不够的。我该怎么做?每当修改 Items 表时,如何更新 gmap.js.erb

【问题讨论】:

  • 控制台日志/网络面板说什么?您是否收到 304(未修改)响应?添加项目后是否可能出现任何错误?
  • 您是否关闭了 Turbolinks? blog.steveklabnik.com/posts/… 并重启
  • @Kalman 关闭 Turbolinks 没有帮助。
  • @Blauharley 项目被添加、修改和删除,没有任何错误。如果我重新启动服务器,它们会正确显示在地图上。
  • 这就是我听起来的样子。服务器生成 showItemsOnMap() 方法并将其发送到客户端(浏览器)。该方法在客户端调用,但客户端从不返回服务器请求更多...

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


【解决方案1】:

您的 gmap.js.erb 被编译为 gmap.js 并在使用此 js 文件的第一页请求时缓存。你可以把这些js放到view里面,让它成为一个动态脚本。

view.html.erb

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-25
    • 2019-04-05
    • 2015-11-27
    • 1970-01-01
    • 1970-01-01
    • 2020-10-31
    • 1970-01-01
    • 2014-07-06
    相关资源
    最近更新 更多