2015-07-17 11 views
6

Sto utilizzando Rails 4.2.3 e sto cercando di personalizzare la pagina di errore 404 in public/404.html. Come posso includere immagini dalla pipeline degli asset?Pagina statica 404 Rails 4: come utilizzare la pipeline di asset?

C'è un excellent post come creare pagine di errore personalizzate dinamiche. Tuttavia, come descritto qui, richiede un sacco di modifiche alle impostazioni che io, come principiante, non sono pronto a prendere. Tutto quello che voglio fare è nella mia pagina 404 per includere 2 immagini che si trovano nella pipeline degli asset. C'è un modo semplice per farlo?

risposta

5

Se si desidera che la pagina di errore per utilizzare le immagini dalla tubazione risorsa, allora hai due opzioni:

  1. Utilizzare pagine di errore dinamiche (ho scritto un tutorial here).
  2. Monkey patch la pipeline di asset per consentire asset non fingerprint.

Dal momento che stai escludendo l'opzione numero 1 per ora, penso che la patch per le scimmie sia la strada da percorrere. Installa la gemma non-stupid-digest-assets nella tua app. Questo patcherà la pipeline delle risorse in modo che produca risorse non assegnate alle impronte digitali (oltre a quelle delle impronte digitali).

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

E, naturalmente, non dimenticate:

$ bundle install 

Poi, nel tuo 404.html, basta fare riferimento al bene come se fosse un file statico, come questo:

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

Questo presuppone che l'immagine reale sia memorizzata qui nel tuo progetto:

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

Sembra che ci siano [parla di funzionalità non stupide-digest-assets che vengono spostate su spherkets] (https://github.com/rails/sprockets-rails/issues/ 49). Ottima risposta BTW. –

0

In una nuova applicazione, i percorsi non trovati vengono indirizzati alla pagina html statica trovata in public/404.html. Come hai trovato, questo è un file .html non che significa che devi fare cose fantastiche per accedere alla tua pipeline di asset.

Se non si desidera passare attraverso la difficoltà di creare una pagina dinamica, il modo più semplice è quello di copiare * le due immagini dalla pipeline delle risorse in public/assets (o una sottodirectory) e quindi includerle con:

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

* si può anche essere in grado di utilizzare un collegamento simbolico, ma potrebbero provocare problemi a seconda di come il vostro server di produzione è impostato.

+0

Vero, ma la mia domanda è come posso includere immagini dalla pipeline di asset? Le immagini nella pipeline degli asset sono memorizzate con un hash (in Rails4). – Marty

+0

Scusa, ho capito il problema ora. Ho aggiornato la mia risposta per cercare di rispondere meglio. Sei morto sull'utilizzo della pipeline di asset per queste due immagini? È possibile avere facilmente queste 2 immagini al di fuori della pipeline degli asset e senza causare problemi. –

+0

Sì, preferirei usarli dalla pipeline degli asset e mi chiedo se c'è un modo più semplice di quello descritto nel post a cui mi riferisco. – Marty

-1

nel vostro 404.html add ...

<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

Questi URL non verranno risolti in produzione perché hanno bisogno di impronte digitali – djb

0

tenere a mente, che il contenuto della cartella di public è visibile a chiunque. Qui, seguendo la convenzione, creerei la cartella assets (se non ce l'hai già), quindi images e stylesheets. E creare normale pagina HTML

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

Poi, nel tuo 404.html vi riferimento in questo modo:

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

1

Aggiungere le immagini alla cartella pubblica.

Utilizzare il percorso relativo principale per le immagini nelle pagine pubbliche 404/500 html.

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