knockout.jsで開発していて、外部ファイルにしたら動かなくてハマった話

rails+knockout.jsでのことだけど、railsじゃなくてもたぶんそう。

view内にscriptタグで書いて動いていたjsが、javascript_include_tagを使って外部ファイルにしたら動かなくて悩んだ。

これは動く
<p>hoge</p>

<script type="text/javascript">
処理
</script>
動かない
<%= javascript_include_tag :main %>

<p>hoge</p>

解決策はjavascript_include_tagをviewの一番下に書く。

<p>hoge</p>

<%= javascript_include_tag :main %>

scriptタグで直接書く時は最下段に、外部ファイルで読み込みせる時は先頭に書くのが習慣になっていたから、意外と気付かなかった。