【问题标题】:Rails 3 Jquery Doesn't Execute After Deleting Public/AssetsRails 3 Jquery 在删除公共/资产后不执行
【发布时间】:2012-08-03 16:23:42
【问题描述】:

前几天我遇到了一些 Ajax 问题,即通过单击提交按钮多次提交表单。我浏览了一下,有人建议我删除我的 public/assets 文件夹,我这样做并重新启动了我的服务器,却发现我的一些 Javascript 库不再正常运行......

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

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

  1. 服务器已停止
  2. 已删除公共/资产
  3. 重新启动服务器并发现问题
  4. 已清除缓存
  5. 再次停止服务器并尝试预编译资产

我尝试过的其他事情:

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

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

额外信息:

  • 我使用的是 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>

最初我认为文件没有从我的资产管道加载,但看起来我的更改在幕后引起了某种冲突。我从我的 application.js 文件中删除了 require_tree 并尝试手动加载库以发现它们再次开始工作,这对我来说不是一个理想的解决方案。

【问题讨论】:

  • 似乎是什么原因导致我的jQuery(document).ready(function($) {...}); 函数无法触发......?

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    相关资源
    最近更新 更多