- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
编辑:一年后,如果我要再次这样做,我会使用 curl.js 而不是 Rails Assets 管道。
相关:Best way to add page specific javascript in a Rails 3 app?
我正在编写一个应用程序并使用coffeescript 来生成所有的js。这就是为什么相关问题不能满足我的需要。
我希望能够将一个 CoffeeScript 文件放在我的 Assets 目录的子文件夹中,并让该 .coffee 文件只在一页上提供。该页面位于命名路由上match 'myNotifications' => 'user#notifications'
最明显的做法是将 .coffee 文件放入 assets\javascripts\user\index.js.coffee
.但是在阅读了有关 Assets 的文档后,我并不清楚。
我读了这一行(来自 http://guides.rubyonrails.org/asset_pipeline.html ):
You should put any JavaScript or CSS unique to a controller inside their respective asset files, as these files can then be loaded just for these controllers with lines such as <%= javascript_include_tag params[:controller] %> or <%= stylesheet_link_tag params[:controller] %>.
assets\javascripts\user.js.coffee
.然后我重新加载了我的主页,Ctrl F5。 user.js 文件仍在主页上加载。经
$ -> alert 'ready from users controller'
测试;当我加载主页时看到该警报。
There are a couple of ways that we can get around this problem. We could use require_directory instead of require_tree as this will only load the files in the current directory and not in subdirectories. If we want more control over the included files we can require them separately instead of including the whole directory. Alternatively we could move the JavaScript files that we want to be included on all pages into a public subdirectory. We can then use require_tree ./public to include just those files.
最佳答案
您可能只想使用以页面标记为条件的逻辑,而不是将文件仅包含在一页上。见 my answer to a related question .这样,您的用户就不必再制作 <script>
特定页面的请求。
如果该页面有很多特定的逻辑(例如,缩小了 10K+),那么是的,将其拆分。正如您在编辑问题时所建议的那样:而不是做 require_tree .
在您的 javascripts
的根目录下目录,而是创建一个名为 global
的子目录并更改 application.js
的顶部从
require_tree .
require_tree global
javascripts
目录,并用
javascript_include_tag
指向它调用该页面的模板。
关于ruby-on-rails - 我应该如何只在一页上包含一个 CoffeeScript 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8284117/
我是一名优秀的程序员,十分优秀!