2013-03-28 16 views
25

ho cercato di utilizzareActionController :: RoutingError (Nessuna corrispondenza del percorso [GET] "/favicon.ico") in Rails

<link href="/favicon.ico" rel="shortcut icon" /> 

così come questo

<link href="/assets/favicon.ico" rel="shortcut icon" /> 

ma sono ancora vedendo questo errore nel file di registro

ActionController::RoutingError (No route matches [GET] "/favicon.ico"): 

la favicon.ico c'è in cartella pubblica (ho anche messo in app/cartella Assets troppo)

Come risolvere questo errore?

+0

Provare ad aggiungere il favicon.ico nella directory principale di un server Web e riprovare. – Vinay

risposta

41

Si sta verificando questo errore perché non si dispone di un favicon.ico nella directory public/ della propria applicazione. Poiché il file non esiste, Rails si sposta, cercando una rotta da abbinare a /favicon.ico nello config/routes.rb.

È possibile risolvere questo in uno dei due modi

  1. inserire manualmente il file favicon.ico nella public/ directory dell'applicazione.
  2. Mettere il favicon.ico in app/assets/images/ e quindi modificare il tag <link ... utilizzare image_path

    <link href="<%= image_path("favicon.ico") %>" rel="shortcut icon" /> 
    

    Questo metterà la favicon.ico in public/assets/favicon.ico, non nella root del documento.

Suggerisco di attaccare con # 1 sopra.


Per quanto riguarda il motivo per cui questa richiesta è anche rivelando nei log, molti browser moderni guardano nella radice del dominio a /favicon.ico da utilizzare per il bookmarking, o la presentazione in una scheda o la barra degli indirizzi. Ecco perché è una buona idea mantenere il favicon.ico nella radice del tuo dominio, nel caso in cui un browser decida (per qualsiasi motivo) di ignorare il tuo tag <link rel="icon shortcut" ....

+0

Ho dovuto fare sia il numero 1 che il numero 2. Stavo usando l'helper favicon_link_tag. –

5

Questo è ciò che Rails genera in application.html.erb di default:

<%= favicon_link_tag 'favicon.ico', :rel => 'shortcut icon' %> 

Non trova favicon.ico in questo modo quando è sotto/public

Funziona correttamente (trova favicon ico sotto/pubblico) se si modifica il tag:

<%= favicon_link_tag %> 
1

Mettendo favicon.ico nella mia cartella pubblica non funzionava, così ho unito alcune delle altre risposte per com e con questo semplice metodo di lavoro.

copiare l'output di favicon_link_tag e iniettare image_path in questo modo:

<link href="<%= image_path("favicon.ico") %>" rel="shortcut icon" type="image/vnd.microsoft.icon" /> 

Ora posizionare favicon.ico nella cartella assets/images e siete a posto.

0

Mettere il favicon.ico in app/assets/images/ e quindi aggiungere

<link href="<%= image_path("favicon.ico") %>" rel="shortcut icon" /> 

nel file di layout.

Questo funziona per me.

Problemi correlati