2015-12-04Railsでアセットを使う場合、assets/以下に入れておけば、Sprocketsが各種の処理を施していきます。それに気をつけないと、うまく動かないこともあります。アセットのプリコンパイル本番環境でアセットをプリコンパイルすると、CoffeeScriptやSassのコンパイルファイル名へのダイジェスト付与などのことが行われます。いうことで、画像ファイルについてもそのままの名前では参照できなくなってしまいます。image_pathヘルパー関数そんなわけで、変換後の名前で参照するためのimage_pathというヘルパー関数があります。これは、ERBなどのRubyコードに埋め込むためのものです。Sassではimage-pathとCSS的な命名に変わって存在しています。どちらもJavaScriptに対して直接使えるものではありません。ERBで埋め込む?もちろん、JavaScriptを.js.erbのような拡張子にしてERB処理させれば、いちおう使うことはできます。%>")});というように、きわめて読み書きしづらくなってしまいます。1ファイルだけに収めるさすがにこんなファイルで溢れかえると収拾がつかなくなるので、image_path関数をJavaScript側に出現させるファイルを作って、残りはそこを呼ぶことにします。%>[name];}このようにすることで、他のファイルではJavaScriptの関数としてimage_pathを呼べます。外部リンクRailsにJavaScriptのimage_pathなお、ここのコードに対してディレクトリ階層に対応するなど、多少を手を入れた形となっています。