Rails 3 Jquery在删除公共/资产后不执行

时间:2012-08-03 16:23:42

标签: jquery ruby-on-rails-3 caching asset-pipeline

前几天我遇到了一些Ajax问题,只需点击一个提交按钮就可以多次提交表单。我做了一些浏览,有人建议我删除我的公共/资产文件夹,我这样做并重新启动我的服务器只是发现我的一些Javascript库不再正常运行...

这实际上非常奇怪,因为我可以使用Firebug调试器查看源代码,我可以看到它肯定已加载。我试图清除我的缓存,我试图在开发模式下重新编译我的资产,我尝试重新启动我的系统,这些都没有奏效。我的Javascript根本没有运行,在删除我的public / assets文件夹后无声地失败。 - 参见编辑

我如何制作此问题的快速参考:

  1. 停止服务器
  2. 已删除的公共/资源
  3. 重新启动服务器并注意到问题
  4. 清除缓存
  5. 再次停止服务器并尝试预编译资产
  6. 我尝试过的其他内容:

    1. 在development.rb中设置config.serve_static_assets = false,再次预编译并重新启动服务器
    2. 通过rails s -e development验证我是在开发模式下运行

    3. 删除了我的tmp / cache文件夹

    4. 额外信息:

      • 我正在使用Rails版本3.1.3

      • 我最近开始使用Gem,要求我在开发过程中将config.cache_classes设置为true。我通过将其设置为false并重新测试来验证这不是问题。

      修改

      进一步测试表明,我的更改阻止了以下代码触发:

      <script type="text/javascript">
         $(document).ready(function() {
           alert("Hello world!")
         });
      
      </script>
      

      但这很好用:

      <script type="text/javascript">
         alert("Hello world!")
      </script>
      

      最初我认为文件没有从我的Asset管道加载,但看起来我的更改在幕后造成了某种冲突。我从application.js文件中删除了require_tree,并尝试手动加载库以找到它们再次开始工作,这对我来说不是一个理想的修复方法。

1 个答案:

答案 0 :(得分:0)

找到了罪魁祸首,实际上是一石二鸟。我的一个JavaScript文件第二次需要jquery和jquery_ujs,因为我的application.js文件中已经需要它,这是我提到的Ajax问题的原因。同一个文件正在运行脚本,该脚本没有附带jquery文档就绪包装器,似乎已经破坏了其他所有内容。

我相信这个问题只是在我删除了我的public / assets文件夹之后才出现,因为它存储了这个代码的旧版本,可能没有这些挑战。