可能重复:
Rails 3.1 asset pipeline: how to load controller-specific scripts?
创建新控制器和关联视图后,Rails会生成一些特定于视图的空资产。请执行以下命令:
rails generate controller home index
这将生成home.css.scss
和home.js.coffee
。作为Rails的新手,我最初的想法是,这些将自动配置为仅在各自的视图中呈现。事实证明事实并非如此。相反,默认情况下所有脚本都在所有视图中呈现。这是预期的吗?使这些资产特定于视图的最佳方法是什么?
答案 0 :(得分:1)
基本设置是(在生产中)提供单个js文件(以及单个CSS文件)。从缓存的角度来看,这通常更有效,但代价可能是首页加载速度稍慢。
如果这样做太多,您可以创建其他清单文件(application.js是默认文件)并单独加载它们。例如,我工作的其中一个应用程序有一个单独的admin.js / css,因为它与面向消费者的部分重叠很少。理论上,您可以将每个js / CSS文件视为清单文件,尽管您需要在每个页面上调用javascript_include_tag。
如果您的问题的根本原因是您有想要仅在某些页面上附加的行为,那么要么使您的选择器/ js足够具体,以便它们可以容忍在所有页面上加载,或者(我通常这样做)添加身体上的控制器或动作特定类并使用它。