Adminテーマのすべての画像を、adminというフォルダー内のassetフォルダーに入れました。次に、通常のようにリンクします。
# Ruby
image_tag "admin/file.jpg" .....
#CSS
.logo{ background:url('/assets/images/admin/logo.png');
参考までに。テストのためだけに、アセットをコンパイルしていないため、asset_pathタグをまだ使用していません。
画像を更新することを決定するまで、これまでのところ問題ありません。一部の色を置き換えましたが、リロード時に新しいスタイルの画像が表示されません。ブラウザで画像を直接表示すると、まだ古い画像が表示されています。さらに一歩進んで、admin imagesフォルダーを破棄しました。しかし、すべての画像がまだ表示されているわけではありません。はい、キャッシュをクリアし、複数のブラウザーで試しました。
何らかの画像キャッシュが行われていますか?これは、ページを提供するためにpowを使用した単なるローカル開発です。
画像フォルダ全体を破壊しても、画像はまだ提供されています。
何か不足していますか?
3.1では、パスの「画像」部分を取り除くだけです。したがって、/assets/images/example.png
にあるイメージは、このURLのgetリクエストで実際にアクセスできます-/assets/example.png
assets/images
フォルダーは新しい3.1アプリと共に生成されるため、これはおそらくあなたが従うことを望んでいる慣例です。 image_tag
がそれを探す場所だと思いますが、まだテストしていません。
また、RailsConfの基調講演で、D_2hがpublic folder
にもう多くはないはずだと言ったことを覚えています。ほとんどはエラーページとファビコンです。
Cssファイルの拡張子を.css.scss
から.css.scss.erb
に変更して、次の操作を行います。
background-image:url(<%=asset_path "admin/logo.png"%>);
変更を確認するには、「ハードリフレッシュ」が必要になる場合があります。 OSXブラウザーではCMD + SHIFT + R。
本番では、必ず
rm -rf public/assets
bundle exec rake assets:precompile Rails_ENV=production
展開時に発生します。
それが価値があることについては、私がこれを行ったとき、cssファイルのパスにフォルダを含めるべきではないことがわかりました。たとえば、app/assets/images/example.png
があり、これをcssファイルに入れた場合...
div.example { background: url('example.png'); }
...それからどういうわけか魔法のように動作します。 rake assets:precompile
タスクを実行することでこれを理解しました。このタスクは、すべてのロードパスからすべてを取り出し、ジャンクドロワーフォルダーpublic/assets
にダンプします。それは皮肉です、IMO ...
いずれにせよ、これは、フォルダーパスを配置する必要がないことを意味し、アセットフォルダー内のすべてがすべて1つの巨大なディレクトリに置かれます。このシステムがファイル名の競合をどのように解決するかは不明であるため、注意が必要な場合があります。
イライラするようなものがありますが、この大きな変更に対しては、これほど優れたドキュメントはありません。
Rails 4では、cssおよびsassヘルパーのimage-urlを使用できるようになりました。
div.logo {background-image: image-url("logo.png");}
背景画像が表示されない場合は、スタイルシートでそれらをどのように参照しているかを検討してください。
cSSまたはIMGタグで画像を参照する場合は、image-name.jpgを使用します
画像は実際には./assets/images/image-name.jpgの下にあります
http://railscasts.com/episodes/279-understanding-the-asset-pipeline
このrailscast(アセットパイプラインに関するRailsチュートリアルビデオ)は、アセットパイプラインのパスを説明するのにも役立ちます。かなり便利だと感じ、実際に数回見ました。
私が選んだ解決策は、@ Lee McAlillyの上記のものですが、このrailscastは、なぜ機能するのかを理解するのに役立ちました。それが役に立てば幸い!
Railsのアセットパイプラインは、この正確な方法を提供します。
Cssまたはscssファイルにimage_path( 'image filename')を追加するだけで、Railsがすべてを処理します。例えば:
.logo{ background:url(image_path('admin/logo.png'));
(。erbビューと同じように機能し、パスには「/ assets」または「/ assets/images」を使用しないことに注意してください)
Railsは他のヘルパーメソッドも提供していますが、ここに別の答えがあります: Rails 3.1を使用するときにSassで参照画像を使用するにはどうすればよいですか?