我想分享一下我的调试过程,因为我卡在这个问题上至少一个小时。当运行本地主机时找不到图像。为了添加一些背景,我正在以下目录中的rails应用程序中进行样式设置:
apps/assets/stylesheets/main.scss
我想在header标签中添加背景图片。以下是我的原始实现。
header {
text-align: center;
background: linear-gradient(90deg, #d4eece, #d4eece, #d4eece),
url('../images/header.jpg') no-repeat;
background-blend-mode: multiply;
background-size: cover;
}
由于此问题,我在Rails服务器和Chrome Dev工具的控制台中分别收到以下错误:
ActionController::RoutingError (No route matches [GET] "/images/header.jpg")
GET http://localhost:3000/images/header.jpg 404 (Not Found)
我尝试了不同的url变化:
url('../images/header.jpg')
url('/../images/header.jpg')
url('./../images/header.jpg')
然而,它仍然没有起作用。那时我非常困惑......我决定将图像文件夹从资产目录(默认情况下)移动到样式表目录中,并尝试以下url的变化:
url('/images/header.jpg')
url('./images/header.jpg')
url('images/header.jpg')
我不再遇到控制台和Rails服务器的错误了。但出于某些原因,图片仍然无法显示。在暂时放弃后,我发现解决方法是添加一个高度属性来显示图像...
header {
text-align: center;
height: 390px;
background: linear-gradient(90deg, #d4eece, #d4eece, #d4eece),
url('images/header.jpg') no-repeat;
background-blend-mode: multiply;
background-size: cover;
}
很遗憾,我仍然不确定为什么在本地主机上使用 "../images/header.jpg" 进行的3次初始url尝试失败,或者何时应该添加一个句点在URL开头。
这可能与application.html.erb中默认链接标签的设置有关,或者可能是.scss与.css之间的问题。或者,也许这就是background属性与url()一起使用的方式(图片需要与css文件位于同一目录中)?无论如何,这是我解决本地主机上CSS背景图像未加载的问题的方法。