Backbone
バックエンドをRailsにしたTodoアプリを引き続きいじっている。
HAML
テンプレートをerbからHAMLにすることにした。
Gemfileにgem 'haml-rails'
を追加してbundle install
し、erbの中身をHAMLに書き換えていく。
地味な作業だけど基本文法を覚えるための良い素振りになっていると思う。また、やはりインデントが構造と一致しているのは良い…。コードも短くなる。
Backbone用templateのHAML化がうまくいかない
Convertion erb to HAMLは無事できたが、Backboneのテンプレートとして埋め込んだ以下の箇所をHAML化するとうまくいかない。パースして以下のようなHTMLが生成されてレスポンスされるのかと思ってたけど違うのかも。
<!-- Templates --> <script type="text/template" id="item-template"> <div class="view"> <input class="toggle" type="checkbox" <%= done ? 'checked="checked"' : '' %> /> <label><%- title %></label> <a class="destroy"></a> </div> <input class="edit" type="text" value="<%- title %>" /> </script> <script type="text/template" id="stats-template"> <% if (done) { %> <a id="clear-completed">Clear <%= done %> completed <%= done == 1 ? 'item' : 'items' %></a> <% } %> <div class="todo-count"><b><%= remaining %></b> <%= remaining == 1 ? 'item' : 'items' %> left</div> </script>
ちなみにHAML化しなくてもうまくいかない。.hamlとしてパースするのだから当然syntax errorになる。 上記の記述のままで制御文字をエスケープしてもダメだった。
クライアントサイドでHAMLを使えるようにしてやるとよい、みたいな記述を見かけたが何か根本解決でない気がする。眠くて頭が働かないので明日引き続きトライしてみる。
(2015/08/18追記) テンプレートをjstとして別ファイルに切り出すことで解決した。
英語
BackboneへのPull requestの結果
broken linkの修正だけで送ったpull requestが無事マージされてよかったと思っていたら、修正箇所を間違えていたっぽい。
github.ioで公開しているページは、doccoというドキュメント生成ツールで自動生成しているものらしい。なので生成されたhtmlを直すんじゃなくてソースのコメント直せばhtmlも直るよ、とのこと。
やってまったか!?と思い、とりあえず低姿勢に謝ったらno harm no foul.(害は無いから気にするな)とのこと。良いフレーズ覚えた。