我已经在我的应用的公共文件夹中构建了一些错误页面(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
)时,它们加载得很好。
然而,当我在应用程序上收到实际错误并且加载了相同的错误页面时,由于某种原因,图像路径会获得一个appdended给他们的控制器名称(即它们变为{{ 1}})。然后,控制器尝试使用该图像文件名作为参数执行操作,这会导致另一个错误。当然,浏览器无法呈现任何图像,因此错误页面本身看起来很糟糕。
知道在实际错误期间如何/为什么将控制器名称添加到图像请求中?
答案 0 :(得分:4)
事实证明,所有错误的是我没有在公共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并仍然加载图像确定。
答案 1 :(得分:2)
图片应位于app/assets/images
目录中。
在公共页面中,您可以编写类似 -
的路径<img src="/assets/Checklick-Logo-White-Transparent.png" alt="Checklick Logo" style="width: 100%">