无法将HTML字符串转储到Rails视图中

时间:2015-03-16 12:12:09

标签: ruby-on-rails ruby nokogiri

我正在玩一个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

任何想法发生了什么?

2 个答案:

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