如何在资产管道中使用favicon?

时间:2015-07-27 17:08:39

标签: ruby-on-rails ruby ruby-on-rails-4 asset-pipeline

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

文件中包含xml文件browserconfig.xml和json文件manifest.json(不确定它们的确切含义)。在标题中,我使用以下方法加载两个文件:

<%= 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文件都包含对现在位于资产管道中的favicon图像(见下文)的引用。因此,在目前的形式中,这些引用失败了。 如何引用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.
  ]
}

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

最好将favicon放在公共文件夹中,否则它将在名称中包含指纹,当它被编译时