静态404页面Rails 4:如何使用资产管道?

时间:2015-07-17 20:12:45

标签: ruby-on-rails ruby-on-rails-4 asset-pipeline

我正在使用Rails 4.2.3并尝试在public/404.html中自定义404错误页面。如何包含资产管道中的图像?

有一个excellent post如何构建动态自定义错误页面。但是,如上所述,它需要对设置进行大量更改,作为初学者,我还没准备好。我想做的就是在我的404页面中包含2个资产管道中的图像。有一个简单的方法吗?

5 个答案:

答案 0 :(得分:6)

如果您希望错误页面使用资产管道中的图像,那么您有两个选择:

  1. 使用动态错误页面(我编写了一个教程here)。
  2. Monkey修补资产管道以允许非指纹资产。
  3. 由于你现在排除了选项#1,我认为猴子补丁是要走的路。在您的应用中安装non-stupid-digest-assets gem。这将修补资产管道,以便生成非指纹资产(除了指纹资产)。

    # Gemfile
    gem "non-stupid-digest-assets"
    

    当然,不要忘记:

    $ bundle install
    

    然后在404.html中,只需将资产称为静态文件,如下所示:

    <img src="/assets/my-image.png">
    

    这假设实际图像存储在项目中:

    app/assets/images/my-image.png
    

答案 1 :(得分:2)

将图像添加到公共文件夹。

使用公共404/500 html页面上图像的根相对路径。

<img src="/my-logo.png"/>

答案 2 :(得分:1)

请注意,任何人都可以看到public文件夹的内容。 按照惯例,我会创建assets文件夹(如果你还没有),然后是imagesstylesheets。 并创建常规的html页面

- app
...
- public
  - 404.html
  - images
    - image1.jpg
    - image2.jpg
  - stylesheets
    - style.css

然后在你的404.html中,你会像这样引用它:

<img src="./assets/images/image1.jpg" alt=""/>

答案 3 :(得分:0)

在新应用程序中,未找到的路由将定向到public/404.html中的静态html页面。正如您所发现的那样,这是一个.html而不是.html.erb文件,这意味着您必须做一些花哨的东西来访问您的资产管道。

如果您不想遇到创建动态页面的麻烦,最简单的方法是将资产管道中的两个图像复制到public/assets(或子目录)中,然后包括他们:

<img src="assets/image.jpg">

*您也可以使用符号链接,但根据生产服务器的设置方式可能会出现问题。

答案 4 :(得分:-1)

在您的404.html添加...

<head>
  <link data-turbolinks-track="true" href="/assets/application.css" media="all" rel="stylesheet" />
  <script data-turbolinks-track="true" src="/assets/application.js"></script>
</head>
<body>
  <img src="simple.gif">
</body>