相対パスでimageファイルを参照できなかったのでimage-urlを使ってみた
実現したいこと
開発環境
- OS:macOS Big Sur 11.2.2
- Ruby:2.6.5
- Ruby on Rails:6.0.0
- Sass:3.7.4
- テキストエディタ:Visual Studio Code
つまづいたこと
ヘッダー/フッターのCSSセレクタに
background-image: url("../images/checks.jpg");
と指定して、「checks.jpg」をapp/assets/imagesの配下に格納。
が・・・ページを読み込むと404 Not Foundエラーに。
試しに他の画像ファイルに置き換えてみたが変化なし。
「checks.jpg」をapp/assets/stylesheets配下に(cssファイルと同じところに)置いてみると正しく表示される。
パスが誤っているのかと思い、VScodeで参照して確かめてみるが正しい。しかし404エラーを辿ってみると全然違うところを参照し行っている模様。
少し前に誤ってapp/assets配下のファイル構成をいじくってしまったのが悪さをしているのか・・・結局原因はわからず。
解決方法
SCSSのimage-urlに置き換えた。
学習中のカリキュラムの中にしれっと「image-url」という記述があったので調べてみた。
SaasというCSSを拡張し扱いやすくしたものがあり、image-urlを初めとした様々なヘルパーを利用できる。
利用したrailsのバージョンではSaasがプリセットされていたので早速CSSファイルからSCSSファイルへ拡張子を変更し(Saasの中でもよりCSSに近い書き方ができるSCSSを選択)、以下のようにコードを変更。
background-image: image-url("checks.jpg");
すると問題なく画像が読み込みできた。
指定している場所としては同じなので不思議だが、やり方は一つではないということで勉強になった。
Author And Source
この問題について(相対パスでimageファイルを参照できなかったのでimage-urlを使ってみた), 我々は、より多くの情報をここで見つけました https://qiita.com/regulus_note/items/ff3707c1eebb5b084d3b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .