Asset Pipeline でまとまった JS から必要な処理だけ呼び出す。
Rails 3.1 から Asset Pipeline で JS がひとつに纏められて全部読み込まれるから対策が必要だよねという話。
http://text.ssig33.com/81
色々やり方があるが、おそらく現状では JS の URL Dispatcher とか Router で分岐するのが正解なのだろう。
http://aligach.net/diary/20110306.html
リンク先の記事では jQuery Router が紹介されている。早速 js2coffee で CoffeeScript 化して assets/javascript に置こうとしたが、よく考えてみると分岐を書いたコードより Router 本体が先に読まれないと正常に動作しない。 Asset Pipeline で読み込み順を制御する方法があれば誰か教えてください。
(12/28 追記)
application.js のコメントで読み込み順を制御でき Rails.application.config.assets.paths でロードパスを確認できるようだ。
http://ja.asciicasts.com/episodes/279-understanding-the-asset-pipeline
そんなわけで現状はこうしている。
Haml
- title 'ほげ新規作成画面' .hoges-new-page hogehoge
CoffeeScript
hoge_function = () -> ... $ -> if $('.hoges-new-page').is(':visible') hoge_function()
小規模なアプリケーションならこれで良いかという感じ。 Haml のタグを命名規則で縛る必要があるのが少しダルい。
(2012/1/10 追記)
layout/application.html.haml 等で以下のようにするのが良さげ。
%body(class='#{controller_name}-#{action_name}-page')
あと、はてな記法はこのまま CoffeeScript や Haml に対応しないままなんですかね。