Rails中的ActionController :: RoutingError(没有路由匹配“/ favicon.ico”)

我试过用

 

以及这个

  

但我仍然在日志文件中看到此错误

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

favicon.ico在公共文件夹中(我也把它放在app / assets文件夹中)

如何解决此错误?

您收到此错误是因为您的应用程序的public/目录中没有favicon.ico 。 由于该文件不存在,Rails继续/favicon.ico ,在config/routes.rb/favicon.ico匹配的路由。

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

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

     " rel="shortcut icon" /> 

    这会将favicon.ico放在public/assets/favicon.ico而不是放在文档根目录中。

我建议坚持上面的#1


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

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

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

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

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

 <%= favicon_link_tag %> 

favicon.ico放在我的公共文件夹中是行不通的,所以我结合其他一些答案来提出这个简单的工作方法。

复制favicon_link_tag的输出并注入image_path如下所示:

 " rel="shortcut icon" type="image/vnd.microsoft.icon" /> 

现在将favicon.ico放在您的assets/images文件夹中,然后进行设置。

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

 " rel="shortcut icon" /> 

在布局文件中。

这对我有用。