我有一个资源
的 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 都在每个页面上运行。
有两种基本解决方案:
- 编写 Javascript,在需要时做它应该做的事情,在不需要时不做任何事情。
- 将
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/