Asset PipelineでController毎のJavaScriptを出力

Rails 3.1以降。


コントローラーを生成すると、app/assets/javascripts/controller_name.js.cofeeが生成されているけど、標準だと、production環境では、どのコントローラーのviewを表示しているかに関係なく、これが全部まとめられてapplication.jsになって出力されている。
development環境の場合も、application.jsにまとめられていないだけで、全ファイルが出力されてる。

下記をfalseにすれば、development環境でもapplication.jsにまとめられて出力される挙動を見られる。

#config/development.rb
config.assets.debug = true

The Asset Pipeline — Ruby on Rails Guidesを読んでみました。

下記2箇所を修正すればOK

#app/assets/javascripts/application.js
//= require_tree .  <-app/assets/javascripts/にあるものを読み込んでしまうので削除
#app/views/layout/application.html.erb
<%= javascript_include_tag "application" %>
<%= javascript_include_tag params[:controller] %>  #<- これを追加

もっと細かく制御したければcontent_forなどを使って出力すれば良いかと。

CSSも同じような感じで。