如何使用RABL嵌入CDATA?

时间:2014-07-03 02:09:14

标签: ruby-on-rails ruby rabl

当我尝试创建如下节点时:

  node 'test' do
    '<![CDATA[ <HTML></HTML> ]]>'
  end

RABL输出如下内容:

<test>&lt;![CDATA[ &lt;HTML&gt;&lt;/HTML&gt; ]]&gt;</test>

我希望输出:

<test><![CDATA[ <HTML></HTML> ]]></test>

怎么做?

1 个答案:

答案 0 :(得分:1)

Rabl的XML渲染器在内部使用ActiveSupport的Hash#to_xml,因此您可以使用该函数的functionality来生成这样的CDATA块:

node 'test' do
  { '_' => lambda { |x| x[:builder].cdata! '<HTML></HTML>' } }
end

请注意,我添加了一个“一次性”键,因为to_xml会抛出传递的键以进行触发。看一下上面链接中的源代码;可能有更好的方法来解决这个问题。

Rabl为我呈现上面的块,如:

<?xml version="1.0" encoding="UTF-8"?>
<hash>
  <test>
    <![CDATA[<HTML></HTML>]]>
  </test>
</hash>