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
匹配的路由。
您可以通过以下两种方式之一解决此问题
- 手动将
favicon.ico
文件放在应用程序的public/
目录中。 -
将
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" />
在布局文件中。
这对我有用。