Подтвердить что ты не робот

ActionController:: RoutingError (Нет маршрутов соответствует [GET] "/favicon.ico" ) в Rails

Я попытался использовать

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

а также этот

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

но я все еще вижу эту ошибку в файле журнала

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

favicon.ico есть в общей папке (я также поместил ее в папку app/assets)

Как исправить эту ошибку?

4b9b3361

Ответ 1

Вы получаете эту ошибку, потому что у вас нет favicon.ico в вашем каталоге public/ вашего приложения. Поскольку файл там не существует, Rails перемещается, ища маршрут в соответствии с /favicon.ico в config/routes.rb.

Вы можете исправить это одним из двух способов.

  • Вручную разместите файл favicon.ico в каталоге public/ вашего приложения.
  • Поместите favicon.ico в app/assets/images/, а затем измените тэг <link ... на использование image_path

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

    Это поместит favicon.ico в public/assets/favicon.ico, не в корень документа.

Я предлагаю придерживаться # 1 выше.


Что касается почему этот запрос даже появляется в ваших журналах, многие современные браузеры смотрят в корне домена для /favicon.ico для использования для закладки или презентации на вкладке или в адресе бар. Вот почему рекомендуется сохранить favicon.ico в корне вашего домена, если браузер решит (по какой-либо причине) игнорировать тэг <link rel="icon shortcut" ....

Ответ 2

Это то, что Rails генерирует в application.html.erb по умолчанию:

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

Он не находит favicon.ico таким образом, когда он находится под /public

Он работает правильно (находит favicon.ico под /public ), если вы меняете тег на:

<%= favicon_link_tag %>

Ответ 3

Вставка favicon.ico в мою общую папку не работала, поэтому я объединил некоторые другие ответы, чтобы придумать этот простой рабочий метод.

Скопируйте вывод favicon_link_tag и введите image_path следующим образом:

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

Теперь поместите favicon.ico в свою папку assets/images, и вы установите.

Ответ 4

Поместите favicon.ico в приложение/активы/изображения/, а затем добавьте

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

в файле макета.

Это работает для меня.