【问题标题】:/favicon.ico Being Appended to Rails 4 Routes/favicon.ico 被附加到 Rails 4 路线
【发布时间】:2013-02-24 20:14:05
【问题描述】:

这是一个奇怪的问题。我今天启动了一个新的 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")

不确定我是否理解导致问题的原因。

【问题讨论】:

  • 这导致了一个问题,因为图标通常位于 your_webapp/app/assets/images/ 中。

标签: routes ruby-on-rails-4


【解决方案1】:

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

处理网站图标的方式如下:

  1. 将您的网站图标文件放在此目录中: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添加任何你需要的东西

【讨论】:

    【解决方案2】:

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

    通常在application.html.slim:

    DOCTYPE html
    html
      head
        = favicon_link_tag
    

    您还需要在您的app/assets/images 文件夹中有一个名为favicon.ico 的文件。


    Official documentation:

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

    选项

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-09
        • 1970-01-01
        • 1970-01-01
        • 2013-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多