5

这是一个奇怪的问题。我今天启动了一个新的 Rails 4 应用程序,然后创建了一个名为 transfer_functions 的资源。当我点击 localhost:3000/transfer_functions/1 之类的 url 时,它会将 /favicon.ico 附加到它的末尾,并且我在服务器控制台中收到此错误。

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

有任何想法吗?谢谢!

该应用程序正在使用“turbolinks”gem。

更新:

我正在使用 Twitter Bootstrap 并使用相应的生成器创建应用程序布局。我从 application.html.haml 文件中删除了这一行,它解决了问题。

%link(href="favicon.ico" rel="shortcut icon")

不确定我是否理解为什么会导致问题。

4

3 回答 3

10

弹出错误的原因是因为您删除的行本质上是在说“在当前目录中查找 favicon.ico”。您发布的那个 haml 代码会呈现为类似于<link href="favicon.ico...".

你应该处理一个网站图标的方式是这样的:

  1. 将您的 favicon 文件放在此目录中:your_webapp/app/assets/images/

  2. 在文档的标题下编辑your_webapp/app/views/layouts/application.html.haml并添加以下内容:= favicon_link_tag

Rails 将使用资产管道为网站图标提供服务,就像任何其他站点资产一样。您只需要文件名,不需要在 url 中包含 images 文件夹。

如果您对文档感兴趣: http: //api.rubyonrails.org/classes/ActionView/Helpers/AssetTagHelper.html#method-i-favicon_link_tag

你也可以添加任何你需要的东西rel

于 2013-06-10T02:40:07.700 回答
0

favicon.ico在 Rails 4 应用程序中使用文件,请favicon_link_tag在布局中使用。

通常在application.html.slim

DOCTYPE html
html
  head
    = favicon_link_tag

您还需要在文件favicon.ico夹中命名一个文件app/assets/images


官方文档

返回加载网站图标文件的链接。您可以在第一个参数中指定不同的文件。助手接受一个额外的选项散列,您可以在其中覆盖“rel”和“type”。

选项

:rel - 指定此链接的关系,默认为 'shortcut icon'

:type - 覆盖自动生成的 mime 类型,默认为 'image/vnd.microsoft.icon'

于 2014-04-06T01:54:15.623 回答
0

我们经常在我们的日志中看到 404 请求“旧版本”图标的请求。在每个新版本上(因此在每个新的预编译上),都会生成一个带有唯一哈希的新 favicon 文件。如果有人存储了 favicon,例如通过在他/她的 iOS 主屏幕上放置指向您网站的快捷方式,这似乎会中断:图标丢失并显示损坏的图标符号。因此,我们放弃了/asset 管道方法,并通过简单地包括以下favicon_link_tag内容恢复到存储在文件夹中的网站图标:public

<link href="favicon.ico">
<link href="favicon_ios.png" rel="apple-touch-icon" type="image/png">

或者在我们的 HAML 案例中:

%link{:href => 'favicon.ico'}
%link{:href => 'favicon_ios.png', :rel => 'apple-touch-icon', :type => 'image/png'}
于 2015-04-01T10:45:18.100 回答