2015-12-14 83 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完全相同的輸出,可能只是將資產哈希添加到文件名中。

相關問題