[開発][REST][jQuery] jTemplate を今更ながら導入
HTMLのコンテンツでAjaxの通信をやろうとすると、どうもHTMLの構文がdomain specificなものになりやすくて*1、また、/blog の返すHTMLコンテンツにeditの為のリンクが必要かどうか、意味的なリンクはハイパーリンクでいいかもしれないが、in-place editor で編集できるようにしたい場合、ハイパーリンクではだめだ、とか葛藤が入る。
で、だったら、テンプレートエンジン自体をクライアント側に持ってこようよ、ということになった。
JavaScript のテンプレートエンジンって、実際どうなの?という話なんだけれど、jQuery のプラグインで実装されているjTemplateは非常に使いやすかった。
ただ、ActionView ほど便利なメソッドがないので(jQueryのほかのプラグインを探せばあるのかもしれない)、
{#param name=count value=0} {#foreach $T as setting} {#if $P.count % 2 == 0} <tr class="even"> {#else} <tr class="odd"> {#/if} </tr> {#param name=x value=$P.count+1} {#/for}
な感じで、少し過去にさかのぼってしまった感はある。一方で、コントローラークラスは
respond_to do |format| format.xml { render :text => @settings.to_xml, :status => 200 } format.json { render :text => @settings.to_json , :status => 200 } end
と format.html が要らなくなって万歳!!