J'ai essayé d'utiliser
<link href="/favicon.ico" rel="shortcut icon" />
ainsi que cette
<link href="/assets/favicon.ico" rel="shortcut icon" />
mais je vois encore cette erreur dans le fichier journal
ActionController::RoutingError (No route matches [GET] "/favicon.ico"):
le favicon.ico est dans le dossier public (je l'ai aussi mis dans le dossier app/assets)
Comment réparer cette erreur?
Vous obtenez cette erreur car vous n'avez pas de favicon.ico
dans votre répertoire public/
de votre application. Comme le fichier n’existe pas à cet endroit, Rails poursuit sa recherche d’un itinéraire à comparer avec /favicon.ico
dans le config/routes.rb
.
Vous pouvez résoudre ce problème de deux manières.
favicon.ico
dans le répertoire public/
de votre application.Placez le favicon.ico
dans app/assets/images/
, puis modifiez votre balise <link ...
pour utiliser image_path
<link href="<%= image_path("favicon.ico") %>" rel="shortcut icon" />
Cela placera le favicon.ico
dans public/assets/favicon.ico
, pas dans la racine du document.
Je suggère de coller avec # 1 ci-dessus.
En ce qui concerne why, cette requête apparaît même dans vos journaux, de nombreux navigateurs modernes recherchent /favicon.ico
dans la racine du domaine, à utiliser pour la sélection ou la présentation dans un onglet ou la barre d'adresse. C'est pourquoi il est judicieux de conserver le favicon.ico
à la racine de votre domaine, au cas où un navigateur décide (quelle qu'en soit la raison) d'ignorer votre balise <link rel="icon shortcut" ...
.
C’est ce que Rails génère dans application.html.erb par défaut:
<%= favicon_link_tag 'favicon.ico', :rel => 'shortcut icon' %>
Il ne trouve pas favicon.ico de cette façon quand il est sous/public
Cela fonctionne correctement (trouve favicon.ico sous/public) si vous modifiez l’étiquette en:
<%= favicon_link_tag %>
Mettre favicon.ico
dans mon dossier public ne fonctionnait pas, alors j'ai combiné certaines des réponses pour trouver cette méthode de travail simple.
Copiez la sortie de favicon_link_tag
et injectez image_path
comme suit:
<link href="<%= image_path("favicon.ico") %>" rel="shortcut icon" type="image/vnd.Microsoft.icon" />
Placez maintenant favicon.ico
dans votre dossier assets/images
et vous êtes prêt.
Mettez le favicon.ico dans app/assets/images/puis ajoutez
<link href="<%= image_path("favicon.ico") %>" rel="shortcut icon" />
dans le fichier de mise en page.
Cela fonctionne pour moi.