2009-12-14 109 views
1

在控制器中,我有一个变量@xml_string = "<tag> hello \n world </tag>"。现在我想显示@xml_string的内容。在erb文件中,我写了<%= @xml_string %>,但这只能显示hello world,xml标记<tag> </tag>已被错过,而\n被忽略。如何在erb文件中以xml格式显示字符串

Aslo,<% render :text => @xml_string , :content_type = 'application/xml' %>根本不显示任何东西。

什么是实现这一目标的正确方法?谢谢。

回答

4

HTML忽略,除非你包的内容为标签是空白感知的新行字符和空格。

<pre><%=h @xml_string %></pre> 

否则,用换行符替换“\ n”。在这种情况下,您需要手动转义HTML字符串。

<%=h @xml_string.gsub("<", "&lt;").gsub("\n", "<br>") %> 
1

尝试:

<%=h @xml_string %> 
+0

@khell,现在我可以显示'',但是\ n仍然被忽略。 +1 – pierrotlefou 2009-12-14 05:21:58

+0

将字符串分配给@xml_string时,将双引号更改为单引号var – khelll 2009-12-14 06:08:06

+0

实际上,使用File.open(“a.xml”)。read'从xml文件读取内容。在这种情况下我该怎么办?谢谢 – pierrotlefou 2009-12-14 06:22:24

1

您可以使用此:

<%=h @xml_string.dump[1..-2] %> 

dump方法简单的方式,使得str == eval(str.dump)返回字符串。这意味着它包含引号,所以您需要[1..-2]将这些引号分开。