kansiho's memo

ruby, python, javascript. Rails, wordpress, OpenCV, heroku...

railsの画像はどこに置くのが良いのか?

どう選ぶのか

結論、assetのコンパイル対象にしたいならassets以下、ブラウザのキャッシュコントロールのためのバージョン管理化に置かれなくていいならpublic以下に置くと良い。 基本的にはシステム側で作る画像はassets以下、ユーザー側のアップロードする画像はpublic配下に置いておくと良い。

だけど、背景画像にしたい時は

public以下に置くようにしている。 気持ち表示速度が速い気がするし、ファイルの書き換えもあまり起こらないと思われるため。 image_urlを使って表示するより、シンプルな気がするため。

先頭に/ スラッシュをつけるとpublic以下になる

<%= image_tag '/images/hoge.png' %>

なら、指定配置場所がpublic/images/hoge.pngだと判断される。

<img src="/images/hoge.png" />
<div style="background-image:url(/images/hoge.png)" /></div>

scssだと

#hoge.css.scss
.hoge {
  background-image: url(/images/hoge.png);
}

参考

Ruby on Rails - Railsで扱う画像はassetsとpublic、どちらに置くといいのでしょうか?(16345)|teratail

Railsアプリをデプロイするとbackground: url(bg-hero-001.jpg)が表示されなくなる話 - Qiita