我尝试过使用
<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文件夹中)
如何解决此错误?
答案 0 :(得分:48)
您收到此错误是因为您的应用程序的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" ...
代码。
答案 1 :(得分:6)
这是Rails默认在application.html.erb中生成的内容:
<%= favicon_link_tag 'favicon.ico', :rel => 'shortcut icon' %>
当它在/ public
下时,它没有找到favicon.ico如果您将标记更改为:
,它可以正常工作(在/ public下找到favicon.ico)<%= favicon_link_tag %>
答案 2 :(得分: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
文件夹中,然后设置好。
答案 3 :(得分:0)
将 favicon.ico 放入 app / assets / images / ,然后添加
<link href="<%= image_path("favicon.ico") %>" rel="shortcut icon" />
在布局文件中。
这适合我。