Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 如何将多个favicon.ico大小与rails 4中的favicon_link_标记辅助对象一起使用_Ruby On Rails 4_Favicon - Fatal编程技术网

Ruby on rails 4 如何将多个favicon.ico大小与rails 4中的favicon_link_标记辅助对象一起使用

Ruby on rails 4 如何将多个favicon.ico大小与rails 4中的favicon_link_标记辅助对象一起使用,ruby-on-rails-4,favicon,Ruby On Rails 4,Favicon,我的问题只是当使用favicon\u link\u标签和多尺寸选项时,favicon没有出现 <%= favicon_link_tag 'favicon.ico', sizes: '16x16 32x32' %> 这些文件分别标记为favicon-16.ico和favicon-32.ico。这些图像位于app/assets/images文件夹中。我给他们贴错标签了吗?这是一个限制吗?解决方案不在于Rails魔术,而在于您管理favicon.ico文件的方式。这是web浏览器所期

我的问题只是当使用
favicon\u link\u标签和多尺寸选项时,favicon没有出现

<%= favicon_link_tag 'favicon.ico', sizes: '16x16 32x32' %>


这些文件分别标记为
favicon-16.ico
favicon-32.ico
。这些图像位于
app/assets/images
文件夹中。我给他们贴错标签了吗?这是一个限制吗?

解决方案不在于Rails魔术,而在于您管理
favicon.ico
文件的方式。这是web浏览器所期望的。特别是,
favicon.ico
应该包含同一图标的三个版本:16x16、32x32和48x48。关于
size
属性,它是在HTML5中引入的,专门用于PNG图标。不
favicon.ico

代码

基本定义已经足够了:

favicon_link_tag '/path/to/favicon.ico'
确保路径与
app/assets/images
一致,我必须承认我不知道它映射到了哪里

图片

你可以先准备三张PNG图片(我们称它们为
16x16.PNG
32x32.PNG
48x48.PNG
),然后用
icotool
等工具将它们合并(在Ubuntu上:
sudo-apt-get-install-icoutils
):


如果您不想麻烦使用
icotool
,并且手头没有任何其他解决方案,您也可以使用此解决方案。只需保留生成的favicon.ico
,如果不感兴趣,则保留其余的。全面披露:我是这个网站的作者。

一个想法是使用发布的philippe_b生成各种图像。将它们放在应用程序/资产/图像中/

然后,在应用程序的application.html.erb中,将以下代码放在应用程序的
标记之间:

<% %w(57 60 72 76 114 120 144 152 180).each do |s| %>
  <%= favicon_link_tag "apple-touch-icon-#{s}x#{s}.png", rel: 'apple-touch-icon', type: 'image/png', sizes: "#{s}x#{s}" %>
<% end %>

<% %w(16 32).each do |s| %>
  <%= favicon_link_tag "favicon-#{s}x#{s}.png", rel: 'icon', type: 'image/png', sizes: "#{s}x#{s}" %>
<% end %>

这将允许您使用在
app/assets/images/
中预编译的资产,而无需将它们放置在
app/public/

请注意,我这里不是在处理Android或Windows图像,只是基本的favicon和apple touch图像。有关建议的apple touch图标尺寸的更多信息

<% %w(57 60 72 76 114 120 144 152 180).each do |s| %>
  <%= favicon_link_tag "apple-touch-icon-#{s}x#{s}.png", rel: 'apple-touch-icon', type: 'image/png', sizes: "#{s}x#{s}" %>
<% end %>

<% %w(16 32).each do |s| %>
  <%= favicon_link_tag "favicon-#{s}x#{s}.png", rel: 'icon', type: 'image/png', sizes: "#{s}x#{s}" %>
<% end %>