2012-06-27 18 views
2

我正在嘗試使用Haml的Icomoon圖標字體,似乎無法找到避開&的方法,因此它只保留&而不是&我怎麼能逃避&Haml,以便編譯成&而不是&? (Haml noob)

Icomoon字體允許您使用具有data-icon =「」屬性的HTML實體。如果我只是做了一個直接的HTML鏈接,在HTML中甚至在Haml文件中工作都很順利。

但是,由於我正在學習Haml,因此我想我會看看這裏有沒有人想推薦最佳方法來解決這個問題。

下面是發生了什麼樣子。

這是原來的Haml的:

%a(href='/posts' data-icon="&#x0026" aria-hidden='true') 

這是怎麼編譯:

<a aria-hidden='true' data-icon='&amp;#x0026' href='/posts'> 

這是怎麼了需要編譯的圖標字體的工作:

<a aria-hidden='true' data-icon='&#x0026' href='/posts'> 

這裏是一個codepen,你可以看到圖標由於放大器而呈現的效果;另外:http://codepen.io/dandenney/pen/3/6

回答

1

可以使用:escape_attrs option來控制屬性,HTML敏感字符是否被轉義:

require 'haml' 

haml = "%a(href='/posts' data-icon=\"&#x0026\" aria-hidden='true')" 

puts Haml::Engine.new(haml, :escape_attrs => false).to_html 

輸出:

<a aria-hidden='true' data-icon='&#x0026' href='/posts'></a> 

注意,這將適用於您的Haml的所有屬性模板。

+0

我在批准這項延遲遺憾。我是Haml的noob,並且我沒有在Rails環境中使用它,所以我不得不跟蹤如何完成這項工作。這是一個很好的解決方法,非常感謝你! –

+0

你會如何在軌道中做到這一點? – janechii

+1

@janechii在'environment.rb'中放置Haml :: Template.options [:escape_attrs] = false'。請參閱[文檔](http://haml.info/docs/yardoc/file.HAML_REFERENCE.html#options)。 – matt

3

我不喜歡頂部海報的方式來完成這個問題。到目前爲止,我已經找到了最好的辦法是做:

- foo = "&#x0026".html_safe 
%a(href='/posts' data-icon=foo aria-hidden='true') 

我不是,這充分高興,但認爲這對軌道更好的應用程序,而不是關閉HTML轉義隨處可見。

+0

只是爲了擴展這個 - 理想情況下haml變量不是內聯的,你可以將它隱藏在視圖助手或等價物中,取決於你使用的是什麼框架/系統(例如Rails/Sinatra等) – kaichanvong

1

在我看來,我不喜歡這個想法來禁用該功能來逃避一般的字符。也許你在你的應用程序的某個時刻使用中繼。

對我來說,做到這一點的最好辦法是:

%a{ href: '/', 'data-icon' => "&#10000;".html_safe }