RailsにJavaScriptのimage_path
erb以外でassets配下の画像を参照するとき、SASSにはimage-pathというナイスなヘルパーがあるのにJSにはない。困る。
こういう誰でも困りそうなことは絶対誰かがなんとかしている。なんとかしていた。
http://dennisreimann.de/blog/referencing-rails-assets-in-coffeescript/
assets/javascripts配下に以下のようなコードを配置する
image_helpers.js.coffee.erb
<% imgs = {} Dir.chdir("#{Rails.root}/app/assets/images/") do imgs = Dir["**"].inject({}) {|h,f| h.merge! f => image_path(f)} end %> window.image_path = (name) -> <%= imgs.to_json %>[name]
名前はなんでもいいけどrubyの処理が入っててかつcoffeescriptで書かれているのでjs.coffee.erbでなければダメ。
これでimage_path()で画像が参照できる!
ちなみにあとから画像を追加したとき、tmp/cache/assetsを消してサーバを再起動しないと読み込まなかったことがあった。そういうものだったけ。
- 作者: 黒田努
- 出版社/メーカー: インプレスジャパン
- 発売日: 2013/03/22
- メディア: 単行本(ソフトカバー)
- クリック: 3回
- この商品を含むブログ (6件) を見る