Rails 4个公共404/500错误页面请求路径错误的图像资源

时间:2015-08-21 14:26:55

标签: html css ruby-on-rails model-view-controller asset-pipeline

我已经在我的应用的公共文件夹中构建了一些错误页面(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}})。然后,控制器尝试使用该图像文件名作为参数执行操作,这会导致另一个错误。当然,浏览器无法呈现任何图像,因此错误页面本身看起来很糟糕。

知道在实际错误期间如何/为什么将控制器名称添加到图像请求中?

2 个答案:

答案 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%">