如何在资产管道中使用图标?

How to use favicon with the asset pipeline?

我正在使用在线生成器实现网站图标(http://realfavicongenerator.net 但其他生成器,如 www.favicon-generator.org 工作方式相同)。生成器提供了近 30 个文件(android、苹果、不同大小等的图像),这就是为什么我将所有这些文件放在资产管道 (assets/images/favicons/) 而不是 [=43] =] 文件夹(否则会变得如此混乱)。

文件中包含一个 xml 文件 browserconfig.xml 和一个 json 文件 manifest.json(不确定它们的确切用途)。在 header 我加载两个文件使用:

<%= content_tag :meta, nil, content: image_path("favicons/browserconfig.xml"), name: 'msapplication-config' %>
<%= content_tag :link, nil, href: image_path("favicons/manifest.json"), rel: :manifest %>

这样使用image_path可以吗?(虽然不是图片,我已经把所有的favicon文件放在一个文件夹里面了assets/images/favicons)

此外,xml 和 json 文件都包含对现在在资产管道中的网站图标图像(见下文)的引用。因此,以目前的形式,这些引用失败了。 如何引用 xml 和 json 文件中的图像?

browserconfig.xml:

<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
  <msapplication>
    <tile>
      <square70x70logo src="/mstile-70x70.png"/>
      <square150x150logo src="/mstile-150x150.png"/>
      <square310x310logo src="/mstile-310x310.png"/>
      <wide310x150logo src="/mstile-310x150.png"/>
      <TileColor>#fff8dc</TileColor>
    </tile>
  </msapplication>
</browserconfig>

manifest.json:

{
  "name": "AppName",
  "icons": [
    {
        "src": "\/android-chrome-36x36.png",
        "sizes": "36x36",
        "type": "image\/png",
        "density": "0.75"
    },
    {
        "src": "\/android-chrome-48x48.png",
        "sizes": "48x48",
        "type": "image\/png",
        "density": "1.0"
    },
    # etc.
  ]
}

事实证明没有预期的那么难。我将这两个文件重命名为 .xml.erb.json.erb,并使用 Ruby/Rails image_path 重新编码引用。现在我认为参考文献有效。

最好将网站图标放在您的 public 文件夹中,否则在编译时名称中会包含指纹