/favicon.ico附加到Rails 4路由

时间:2013-03-09 07:20:48

标签: routes ruby-on-rails-4

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

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

有什么想法吗?谢谢!

该应用正在使用'turbolinks'宝石。

更新

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

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

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

3 个答案:

答案 0 :(得分:10)

弹出错误的原因是因为您删除的行实际上是在“在当前目录中查找favicon.ico”。你发布的haml代码呈现为html,看起来像<link href="favicon.ico..."

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

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

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

  3. Rails将使用资产管道为任何其他网站资产提供服务。您只需要文件名,而不需要在URL中包含images文件夹。

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

    您还可以添加rel

    所需的任何内容

答案 1 :(得分:0)

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

通常在application.html.slim

DOCTYPE html
html
  head
    = favicon_link_tag

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


Official documentation

  

返回加载favicon文件的链接。您可以指定其他   在第一个参数中的文件。帮助者接受其他选项   hash,你可以覆盖“rel”和“type”。

     

选项

     

:rel - 指定此链接的关系,默认为“快捷图标”

     

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

答案 2 :(得分:0)

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

<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'}