我正在尝试在源代码中完成以下内容:
<div id="box<%=id%>"></div>
没有逃避哈姆尔的任何迹象。
%div{ :id => "box_<%=id%>" }
产生
<div id='box_<%=id%>'></div>
现在我使用Haml执行此操作的唯一方法是使用:plain
过滤器和硬编码HTML,而无需使用任何View Helpers。我该如何解决这个问题?
我需要这个,因为我因为第三方语法惯例而被迫遵循这个惯例:JavaScript Micro-Templating
参考:
答案 0 :(得分:4)
你说你在Haml编码,但括号表示Erb。
第1步。尝试普通的Ruby插值:
%div{ :id => "box_#{id}" }
第2步。没有第2步。
更新:当我写这个答案时,我之前没有使用过JS模板框架。我很抱歉没有理解为什么这是必要的。
答案 1 :(得分:2)
基本上,不要将HAML用于那一个语句。例如,假设您现在正在HAML中执行类似的操作:
%script#template(type="text/html")
%div{ :id => "box_<%=id%>" }
相反,请执行:
%script#template(type="text/html")
<div id="box_<%=id%>"></div>
它会将脚本标记正确解释为HAML,然后由于您没有使用任何%
,#
等来启动下一行,它会将该行解释为纯文本并通过通过。似乎对我来说工作正常,我和你的情况非常相似。我做的一件事就是在页面的%
中使用此Javascript语句将jQote(我用于我的Javascript模板的模板引擎)标记从$
更改为head
:
%script( type="text/javascript")
$(function() { $.jqotetag( '$' ); });
这样%
符号就不会混淆Ruby解释器。所以最后一个例子是:
%script#template(type="text/html")
<div id="box_<$=id$>"></div>
祝你好运!
答案 2 :(得分:0)
http://haml.info/docs/yardoc/file.REFERENCE.html#unescaping_html
! %div(id="box_<%= data.id %>")