2015-07-17 4 views
6

Я использую Rails 4.2.3 и пытаюсь настроить страницу ошибки 404 в public/404.html. Как включить изображения из конвейера?Static 404 page Rails 4: как использовать конвейер активов?

Существует excellent post, как создавать динамические страницы пользовательских ошибок. Однако, как описано здесь, для этого требуется много изменений в настройках, которые я, как новичок, не готов принять. Все, что я хочу сделать, это на моей странице 404 включить 2 изображения, которые находятся в конвейере активов. Есть простой способ сделать это?

ответ

5

Если вы хотите, чтобы ваша страница ошибки использовать изображения из трубопровода активов, то есть два варианта:

  1. Использование динамических страниц ошибок (я написал учебник here).
  2. Monkey исправляет конвейер активов, чтобы позволить активы без отпечатка пальца.

Поскольку вы сейчас исключаете вариант № 1, я думаю, что патч обезьяны - это путь. Установите в своем приложении жемчужину non-stupid-digest-assets. Это приведет к исправлению конъюнктуры активов, чтобы он производил активы без отпечатков пальцев (в дополнение к отпечаткам пальцев).

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

И, конечно же, не забывайте:

$ bundle install 

Тогда в вашем 404.html, просто обратитесь к активу, как если бы это был статический файл, например:

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

Предполагает, что фактическое изображение сохраняется здесь в вашем проекте:

app/assets/images/my-image.png 
+0

Похоже, что [переговоры о невозможности использования не-глупых-дайджест-активов в sprokets] (https://github.com/rails/sprockets-rails/issues/ 49). Отличный ответ BTW. –

0

В новом приложении маршруты, которые не найдены, направляются на статическую страницу html, найденную в public/404.html. Как вы нашли, это файл .html, а не .html.erb, что означает, что вам нужно делать фантазии, чтобы получить доступ к конвейеру вашего актива.

Если вы не хотите беспокоиться о создании динамической страницы, самый простой способ - скопировать * два изображения из конвейера вашего имущества в public/assets (или подкаталог), а затем включить их с помощью:

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

* Вы также можете быть в состоянии использовать символические ссылки, но это может вызвать проблемы в зависимости от того, как производственный сервер настроен.

+0

Правда, но мой вопрос заключается в том, как включить изображения из конвейера активов? Изображения в конвейере активов хранятся с хешем (в Rails4). – Marty

+0

Извините, я сейчас понимаю проблему. Я обновил свой ответ, чтобы попытаться ответить на него лучше. Вы настроены на использование конвейера активов для этих двух изображений? Вы можете легко иметь эти 2 изображения вне конвейера активов и не вызывать проблем. –

+0

Да, я бы предпочел использовать их из конвейера активов и задаться вопросом, есть ли более простой способ, чем тот, который описан в сообщении, о котором я говорю. – Marty

-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> 
+0

Эти URL-адреса не будут разрешаться на производстве, потому что им нужны отпечатки пальцев. – djb

0

Имейте в виду, что содержание public папки будет видна всем. Там, следуя соглашению, я бы создал папку assets (если у вас ее еще нет), то images и stylesheets. И создать регулярные страницы HTML

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

Тогда в вашем 404.html вы будете ссылаться на него так:

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

1

Добавьте изображения в общую папку.

Использовать корневой путь к изображениям на общедоступных страницах 404/500 html.

<img src="/my-logo.png"/> 
Смежные вопросы