RailsでJavascriptをControllerから送る方法

jQueryとかRailsの基本的な部分の説明を割愛して書くので「???」な方はごめんなさい。

Railsでは「public/javascripts」の下にjavascriptを配置し、javascript_include_tagを使ってscriptタグを生成させて使うのが普通な使い方だと思う。この場合、「public」の下のファイルは静的なファイルとして、Railsとしては何も処理せず内容を配信してくれる。

さて、そこで。

たまーにjavascript内にURLを書きたい時がある。この「URL」が静的なファイル、つまり「public」の下にあるファイルが持つURLであれば特に問題はないのだが動的なファイル、つまり内容が変わるとすると、ちょっと面倒なことになる。

状況としてはこんな感じ。(以下の「静的」は「ファイルの中身が変更にならない」という意味。)

ケース1: HTML => JS1(静的)
ケース2: HTML => JS2(動的)

ケース1の場合は、JS1を「public/javascripts」の下に配置してあげれば問題ない。HTMLがクライアントに送られjavascript_include_tagを使って生成されたJS1用のScriptタグが送られるので無事Javascriptはロードされるだろう。

問題はケース2のとき。JS2のscriptの内容を動的に変化させたいとする。そうなると、JS2は「public/javascripts」の下には置けない。何らかのcontrollerのactionとして実装されることになるだろう。
こんな時どうすればいいのか。

続きを読む