Ruby on rails 3.1 资产管道和Rails 3.1 JS库只针对一个控制器中的一个页面

Ruby on rails 3.1 资产管道和Rails 3.1 JS库只针对一个控制器中的一个页面,ruby-on-rails-3.1,asset-pipeline,Ruby On Rails 3.1,Asset Pipeline,我认为这些文件需要澄清。他们说: 例如,如果生成了ProjectsController,则会有一个新的 文件位于app/assets/javascripts/projects.js.coffee,另一个位于 app/assets/stylesheets/projects.css.scss。你应该把任何 各自资产中控制器特有的JavaScript或CSS 文件,因为这些文件可以仅为这些控制器加载 使用诸如 或者 我的理解是,在生产模式下,所有的JS都打包到一个优化文件中,最好是这样。我猜缓存这个优

我认为这些文件需要澄清。他们说:

例如,如果生成了ProjectsController,则会有一个新的 文件位于app/assets/javascripts/projects.js.coffee,另一个位于 app/assets/stylesheets/projects.css.scss。你应该把任何 各自资产中控制器特有的JavaScript或CSS 文件,因为这些文件可以仅为这些控制器加载 使用诸如 或者

我的理解是,在生产模式下,所有的JS都打包到一个优化文件中,最好是这样。我猜缓存这个优化的文件比让页面专门加载不同的JS文件集更可取

javascript_include_标记的要点可能是运行一些特定的javascript到该页面。但是,application.js的默认设置是包含树,其中包含生成的文件。所以我猜这将不得不调整为不包含任何特定于控制器的javascript

这里的答案似乎暗示了一种合理的处理方法,即将JS特性与div相关联,当JQuery在页面上看不到div时,不会执行任何操作


那么,最佳实践是什么?我对控制器特定div的理解是否正确?在application.js中包含树的默认设置是否与特定于控制器的js的目标冲突?

它确实冲突-您应该选择一种方法require_树,或者选择另一种方法加载每个控制器文件

第一种是最优的,使用css类针对特定于页面的js很简单


你唯一不想这样做的时候是在管理部分,在那里你会使用第二个清单或一些其他专业功能,比如只在特定页面上的lightbox gallery,这样你就不想在站点上到处都有额外的js和css。

我认为你不应该依赖application.js scaffold。application.js需要整个树,但这样做是为了便于启动项目,并不意味着应该保持这种方式

您可能会创建不同的文件包,其中一些文件只会包含在特定的页面中。 例如,my application.js只需要库和应用程序文件夹中的每个文件。这样,您仍然可以使用特定于页面的js

我想如果您有特定于某个控制器的大型javascript文件,这可能会很有用