34

我试过用

<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 文件夹中)

如何解决此错误?

4

4 回答 4

54

您收到此错误是因为您favicon.icopublic/应用程序目录中没有。因为该文件不存在,Rails 继续前进,/favicon.icoconfig/routes.rb.

您可以通过以下两种方式之一解决此问题

  1. 手动将favicon.ico文件放在public/应用程序的目录中。
  2. 放入然后更改您的favicon.ico标签以使用app/assets/images/<link ...image_path

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

    这将放置favicon.icoin public/assets/favicon.ico而不是文档根目录。

我建议坚持上面的#1


至于为什么这个请求甚至出现在您的日志中,许多现代浏览器会在域的根目录中查找/favicon.ico以用于书签,或在选项卡或地址栏中显示。这就是为什么最好将 保留favicon.ico在域的根目录中,以防浏览器决定(无论出于何种原因)忽略您的<link rel="icon shortcut" ...标签。

于 2013-03-28T17:12:35.707 回答
7

这是 Rails 默认在 application.html.erb 中生成的:

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

当它在 /public 下时,它不会以这种方式找到 favicon.ico

如果您将标签更改为:它可以正常工作(在 /public 下找到 favicon.ico):

<%= favicon_link_tag %>
于 2013-05-19T16:38:24.933 回答
1

放入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文件夹中,您就可以设置了。

于 2013-11-23T03:17:46.897 回答
1

favicon.ico放在app/assets/images/中,然后添加

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

在布局文件中。

这对我有用。

于 2017-01-08T11:11:24.020 回答