我認爲文檔http://guides.rubyonrails.org/asset_pipeline.html需要一些說明。他們陳述:Asset Pipeline and Rails 3.1 JS庫只針對一個控制器中的一個頁面
例如,如果產生ProjectsController,會出現在應用程序/資產/ Java腳本/ projects.js.coffee新 文件,另一個在 應用程序/資產/樣式表/ projects.css .scss。你應該把任何 的JavaScript或CSS唯一的控制器它們各自的資產內 文件,因爲這些文件可以隨後只爲這些控制器 用線如<%= javascript_include_tag PARAMS加載[:控制器]%> 或<% = stylesheet_link_tag params [:controller]%>。
這是我的理解是在生產模式下,所有的JS被打包成一個優化的文件,最好。我猜測,這個優化文件的緩存優於頁面專門加載不同的JS文件本身。
也許javascript_include_tag的要點是運行一些特定的JavaScript到該頁面。但是,application.js的默認值是包含樹,其中包含生成的文件。所以我猜測,必須調整爲不包含任何控制器特定的JavaScript。
這個答案在這裏Using Rails 3.1, where do you put your "page specific" javascript code?似乎提出了一個合理的方法來處理這個問題是將JS特性與div關聯起來,當JQuery沒有在頁面上看到div時,什麼都不執行。
那麼最佳實踐是什麼?我對控制器特定的div的理解是否正確?在application.js中包含樹的缺省值是否與控制器特定的js的目標衝突?