Rails + Haml:如何使用unescape标签参数?

时间:2010-08-22 05:32:54

标签: html ruby-on-rails haml

我正在尝试在源代码中完成以下内容:

<div id="box<%=id%>"></div>

没有逃避哈姆尔的任何迹象。

%div{ :id => "box_<%=id%>" }

产生

<div id='box_&lt;%=id%&gt;'></div>

现在我使用Haml执行此操作的唯一方法是使用:plain过滤器和硬编码HTML,而无需使用任何View Helpers。我该如何解决这个问题?

我需要这个,因为我因为第三方语法惯例而被迫遵循这个惯例:JavaScript Micro-Templating

参考:

Haml reference

3 个答案:

答案 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)