2009-12-14 3 views
1

Dans le contrôleur, j'ai une variable @xml_string = "<tag> hello \n world </tag>". Maintenant, je veux montrer le contenu de @xml_string. Dans le fichier erb j'ai écrit <%= @xml_string %>, mais cela ne peut afficher que hello world, le tag xml <tag> </tag> a été manqué et \n a été ignoré.Comment afficher la chaîne au format xml dans le fichier erb

Aslo, <% render :text => @xml_string , :content_type = 'application/xml' %> ne montrerait rien du tout.

Quelle est la bonne façon d'y parvenir? Merci.

Répondre

4

HTML ne tient pas compte de nouveaux personnages en ligne et des espaces blancs à moins que vous envelopper le contenu dans une balise qui est des espaces blancs au courant.

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

Sinon, remplacez le "\ n" par un saut de ligne. Dans ce cas, vous devez manuellement échapper la chaîne HTML.

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

essayer:

<%=h @xml_string %> 
+0

@khell, maintenant je peux montrer '', mais '\ n' était toujours ignoré. +1 – pierrotlefou

+0

Modifier les guillemets doubles en guillemets simples lors de l'affectation de la chaîne à la variable @xml_string – khelll

+0

En fait, le contenu a été lu à partir du fichier XML en utilisant 'File.open (" a.xml "). Read'. Que dois-je faire dans ce cas? Merci – pierrotlefou

1

Vous pouvez utiliser ceci:

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

La méthode dump simplement retourner la chaîne d'une manière qui rend str == eval(str.dump). Cela signifie qu'il inclut les guillemets, donc vous avez besoin du [1..-2] pour les découper.

Questions connexes