2015-12-14 32 views
2

我在一个外部文件中有一个svg,我想在Rails中使用一条语句。如何在Rails链轮资产助手中使用svg'use'语句?

如果我做的:

%svg 
    %use{"xlink:href" => "assets/icon.svg#test"} 

生成的HTML:

<svg> 
    <use xlink:href="assets/icon.svg#test"></use> 
</svg> 

一切正常。

但是,我希望这能够以类似于image_tag的工作方式使用链轮资源版本控制。

我试图做的:

%svg 
    %use{"xlink:href" => image_url("icon.svg#test")} 

这将生成的html:

<svg> 
    <use xlink:href="http://0.0.0.0:5000/assets/icon.svg#test"></use> 
</svg> 

资产肯定存在于http://0.0.0.0:5000/assets/icon.svg,但图标不显示。

我在做什么错?我如何使用svg use语句使用sprockets资产助手?

+0

你在用什么UA。这可以在Firefox上运行,但有些UA不支持外部的''。 –

回答

0

资产不能在0.0.0.0存在,它是不是一个真正的IP,您需要设置config.action_controller.asset_host

在发展127.0.0.1(环回IP)将做

+0

即使asset_host设置为127.0.0.1,问题依然存在 – Riina

0

似乎是一个跨浏览器的产地安全问题。

谷歌浏览器实际上给出了一个消息,帮助这一点。 (我以前使用Firefox,所以没有注意到这一点...)

不安全的尝试从URL加载URL http://0.0.0.0:5000/assets/icon.svg URL http://localhost:5000/。域,协议和端口必须匹配。

该域名与它的工作很匹配。

0

在我看来,这可以通过使用image_path而不是image_url来解决。这样,你应该得到一个到SVG文件的相对链接,即与你的原始HTML完全相同的输出,可能只是将资产哈希添加到文件名中。

相关问题