您不需要|
字符,Slim允許inline HTML直接包含HTML,並且包含文檔類型。這雖然對格式沒有幫助,但它之後仍然沒有換行符。
Slim使用的doctypes are actually managed in Temple。你可以改變它來添加一個自定義的文檔類型來獲得你想要的行爲。這確實涉及到與Temple的內部數據混淆,所以你需要小心一點,特別是在升級時,因爲內部可能已經改變。
有問題的散列是frozen,所以你不能只是添加一個新的條目。但是,您可以在dup
之後爲重複散列添加一個條目,並將新散列分配回常量。這將導致Ruby產生一個警告,因爲你通常不應該以這種方式重新分配常量。現在
new_hash = Temple::HTML::Fast::XHTML_DOCTYPES.dup
new_hash['rdf'] = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">'
Temple::HTML::Fast::XHTML_DOCTYPES = new_hash
你可以使用rdf
,就好像是在修身預定義的文檔類型。
doctype rdf
html
這將產生:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
<html></html>
如果你想避免看到警告,設置$VERBOSE
到nil
改變常數(請確保您改回之後)之前。
begin
old_verbose, $VERBOSE = $VERBOSE, nil
Temple::HTML::Fast::XHTML_DOCTYPES = new_hash
ensure
$VERBOSE = old_verbose
end
(你可以如果您使用Rails的它已經完成了你silence_warnings
把它變成一個接受塊的方法。)
當我刪除'|'然後我得到的運行時錯誤:'''未知行指示符''' – Dfr
感謝您的解決方案,但我更喜歡避免hacky解決方案,因爲它使應用程序很難保持最後 – Dfr
@Drr您正在使用什麼版本的Slim?它看起來像1.3.1中添加了內聯HTML:https://github.com/stonean/slim/blob/v1.3.1/CHANGES#L3 – matt