iCy*_*org 33 ruby-on-rails ruby-on-rails-3
我试过用
<link href="/favicon.ico" rel="shortcut icon" />
Run Code Online (Sandbox Code Playgroud)
以及这个
<link href="/assets/favicon.ico" rel="shortcut icon" />
Run Code Online (Sandbox Code Playgroud)
但我仍然在日志文件中看到此错误
ActionController::RoutingError (No route matches [GET] "/favicon.ico"):
Run Code Online (Sandbox Code Playgroud)
favicon.ico在公共文件夹中(我也把它放在app/assets文件夹中)
如何解决这个错误?
dee*_*our 51
你得到这个错误,因为你没有favicon.ico在你的public/应用程序的目录.由于该文件不存在在那里,导轨上移动,寻找一个途径来匹配/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" />
Run Code Online (Sandbox Code Playgroud)
这将放置favicon.ico在public/assets/favicon.ico,没有在文档根.
我建议坚持上面的#1.
至于为什么这个请求甚至会出现在您的日志中,许多现代浏览器会在域的根目录中查找/favicon.ico用于书签或在选项卡或地址栏中显示的内容.这就是为什么最好保留favicon.ico域的根目录,以防浏览器决定(无论出于何种原因)忽略您的<link rel="icon shortcut" ...标记.
小智 6
这是Rails默认在application.html.erb中生成的内容:
<%= favicon_link_tag 'favicon.ico', :rel => 'shortcut icon' %>
Run Code Online (Sandbox Code Playgroud)
当它在/ public下时,它不会以这种方式找到favicon.ico
如果您将标记更改为:它正常工作(在/ public下找到favicon.ico)
<%= favicon_link_tag %>
Run Code Online (Sandbox Code Playgroud)