RailsのビューをJavaScript形式でレンダリングする。
<script type="text/javascript" src="/include.js"></script> ↓ document.write('<p>foobar<\/p>');
のようにJavaScriptで外部HTMLをインクルードしたい場合。
document.writeをRailsで出力するメソッド。
def render_to_js(opts) str = render_to_string opts str = str.gsub(/[\r\n]/," ") str = str.gsub(/\\/,"\\\\") str = str.gsub(/'/,"\\\'") str = str.gsub(/\s+/," ") str = str.gsub(/<\//,"<\\/") render :text => "document.write('#{str}');\n" end
をapp/controller/application.rbに追加。renderと同じオプションを指定して、
render_to_js :action => 'include_js', :layout => false
のようにして使う。テンプレートは普通にHTMLを出力するように記述する。
</ → <\/ の変換は、CDATAの終了記号をエスケープするため。外部ファイルとして読み込む前提なら必要ないかもしれない。