javascript - rails : Asset Pipeline creates Javascript errors in views scripts weren't intended for

标签 javascript ruby-on-rails ruby-on-rails-3 asset-pipeline

我有一个资源的 View 和一些特定于它的javascript。因此,我尽职尽责地将 Javascript 放入 app/assets/javascripts/resource.js.coffee 中。

问题是,当我转到应用程序中的其他 View 时,我会收到各种 Javascript 错误,例如:

Type issue: 'null' is not an object...

page_url = page_image.getAttribute('src');

应用程序工作正常,但这些脚本实际上不应该尝试在它们不适合的 View 中运行。

显然我错过了一些东西......嗯......显然!它是什么?

最佳答案

默认情况下,application.js 包含 app/assets/javascripts 中的所有脚本,并且默认情况下,您的布局包含所有这些脚本。这样做的优点是浏览器只需对 Javascript 文件发出一次请求,然后就可以缓存该文件,但缺点是所有 Javascript 都在每个页面上运行。

有两种基本解决方案:

  1. 编写 Javascript,在需要时做它应该做的事情,在不需要时不做任何事情。
  2. application.js 更改为不包含所有内容,在需要时包含单个 Javascript 文件,并更改 config.assets.precompile 以包含所有新的顶级文件文件。

关于javascript - rails : Asset Pipeline creates Javascript errors in views scripts weren't intended for,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12536118/

相关文章:

javascript - 导入 serval webcomponent 时,前一个自定义元素被下一个元素覆盖

ruby-on-rails - 如何使用继承用户模型定义工厂

ruby-on-rails - 无 rspec 期望的 capybara have_field 在升级到 2.2 时失败

ruby-on-rails - have_selector 测试失败

ruby-on-rails - 创建具有附加值的多维哈希

ruby - 如何使用模块对类进行猴子修补?

Javascript TinyMCE 和 Tinybox2

javascript - 如何获取document.write中的变量名?

javascript - Jquery 将键绑定(bind)到除类之外的正文

mysql - 如何在 Rails 中集成 "Did you mean"功能?