我正在玩一个Rails应用程序,它打算显示我拥有的一些XML数据的HTML呈现。
我使用Nokogiri将XML文档转换为控制器中的HTML标记字符串,然后在视图中,我尝试显示它。但是当我加载页面时,所有HTML标记<div>
等都被视为字符串的一部分而不是HTML标记。
转换逻辑如下所示:
def xslt_apply_to(xml_open_uri_file, xsltfile, xslt_param_array)
xml = xml_open_uri_file
xslt = Nokogiri::XSLT(open(xsltfile))
result_doc = xslt.apply_to(xml, xslt_param_array)
return result_doc
end
xml_open_uri_file
是我正在转换的XML文件,xsltfile
是我用来转换它的文件。
此方法返回包含
的String"<div><p>Test test test test test</p></div>"
在@transform
:
@transform = xslt_apply_to(xmldoc,xsltdoc,xslt_param_array)
然后我试图在我的视图中包含这个:
<div id="lbp-text-body" class="container">
<%= @transform %>
<div>
但浏览器中显示的结果是:
<div><p>Test test test test test</p></div>
当我真正想要的是包含在浏览器识别的<div>
和<p>
中的文本。所以我在浏览器中应该看到的是:
Test test test test test
任何想法发生了什么?
答案 0 :(得分:0)
试试这个:
<%= raw(@transform) %>
raw()
是html_safe()
的包装器,它强制输入String,然后在其上调用html_safe()
。
您可以参考&#34; SafeBuffers and Rails 3.0&#34;了解更多信息。
答案 1 :(得分:0)
另一种选择。你试过html_safe
吗?与raw
相比,处理步骤少一个,这就像追加to_s
然后附加html_safe
一样。快捷方式,但仅在您知道字符串为非零时才使用。
<%= @transform.html_safe %>