默認下,pipeline就是加載一個大的application.js和application.css,這裏最大的一個問題是,打開一個頁面,無論要不要,都得把全部的js和css都加載,我感受這很不妥,不說文件個頭較大,還有可能出現衝突。因此我認爲每一個頁面只要加載公共的js和css 及 這個頁面所需的js和css便可,其實在guide中提到了一個方法,就是Controller Specific Assets,可是隻是簡單的交代了一下,該怎搞,以下:javascript
首先,改造application.js和application.css,將require_tree去掉,只明確地加載須要的公共文件。css
第二,改造layouts/application.html.erbhtml
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> <%= javascript_include_tag params[:controller] %>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %> <%= stylesheet_link_tag params[:controller] %>
第三,在initializers/assets.rb中加上一段代碼,讓controller所對應的css和js文件能被預處理java
Rails.application.config.assets.precompile += %w( users.js users.css )
只要這三步就能夠了,而後放心大膽的在各controller相關的js和css中折騰,無論怎樣都不會影響到其餘的js和css了。ruby