无法将 HTML 字符串转储到 Rails 视图中
Trouble dumping into HTML string into Rails view
我正在玩一个 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
是我用来转换它的文件。
这个方法returns一个包含
的字符串
"<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
知道发生了什么事吗?
试试这个:
<%= raw(@transform) %>
raw()
是 html_safe()
的包装器,它强制输入字符串,然后在其上调用 html_safe()
。
您可以参考“SafeBuffers and Rails 3.0”获取更多信息。
另一种选择。你试过html_safe
了吗?它比 raw
少了一个处理步骤,这就像调用 to_s
然后 html_safe
附加。一种快捷方式,但仅当您知道您的字符串不为零时才使用。
<%= @transform.html_safe %>
我正在玩一个 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
是我用来转换它的文件。
这个方法returns一个包含
的字符串"<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
知道发生了什么事吗?
试试这个:
<%= raw(@transform) %>
raw()
是 html_safe()
的包装器,它强制输入字符串,然后在其上调用 html_safe()
。
您可以参考“SafeBuffers and Rails 3.0”获取更多信息。
另一种选择。你试过html_safe
了吗?它比 raw
少了一个处理步骤,这就像调用 to_s
然后 html_safe
附加。一种快捷方式,但仅当您知道您的字符串不为零时才使用。
<%= @transform.html_safe %>