我已经在应用程序的公用文件夹中构建了一些错误页面(404、500等)。我知道这些文件不在资产管道的范围内,因此我将每个文件构建为独立的html文件,并在其头部添加了CSS。
这些错误页面上有几张图片(背景和徽标)。两者都以常规方式加载(不使用任何rails助手):
<img src="Checklick-Logo-White-Transparent.png" alt="Checklick Logo" style="width: 100%">
background: url("Checklick-Cloud-Background-High.jpg") no-repeat center top;
在生产中,当我尝试加载这些页面(app.checklick.com/500.html
)时,它们的加载就很好。
但是,当我在应用程序上遇到实际错误并加载了相同的错误页面时,由于某种原因,图像路径会获得一个附加到它们的控制器名称(即它们变为app.checklick.com/programs/Checklick-Logo-White-Transparent.png
)。然后,控制器尝试使用该图像文件名作为参数执行操作,这将导致另一个错误。当然,浏览器无法渲染任何图像,因此错误页面本身看起来很破损。
知道在实际错误期间如何/为什么将控制器名称添加到图像请求中吗?
事实证明,所有错误是我没有在公共404/500 html页面上使用相对于图像的根目录相对路径。
我变了
<img src="Checklick-Logo-White-Transparent.png" alt="Checklick Logo" style="width: 100%">
到
<img src="/Checklick-Logo-White-Transparent.png" alt="Checklick Logo" style="width: 100%">
并改变了
background: url("Checklick-Cloud-Background-High.jpg") no-repeat center top;
到
background: url("/Checklick-Cloud-Background-High.jpg") no-repeat center top;
现在,无论我的错误页面出自何处,图像都可以加载。例如,我可以加载app.checklick.com/500或app.checklick.com/programs/500并仍然可以加载图像。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句