2009-12-14 5 views
1

컨트롤러에서 변수는 @xml_string = "<tag> hello \n world </tag>"입니다. 이제 @xml_string의 콘텐츠를 표시하려고합니다. erb 파일에서 나는 <%= @xml_string %>을 작성했으나 hello world 만 표시 할 수 있으며 <tag> </tag> 태그는 누락되어 \n은 무시되었습니다.erb 파일에서 xml 형식의 문자열을 표시하는 방법

마찬가지로, <% 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

+0

문자열을 @xml_string에 할당 할 때 큰 따옴표를 작은 따옴표로 변경하십시오. – khelll

+0

사실, 내용은'File.open ("a.xml"). read'을 사용하여 xml 파일에서 읽었습니다. 이 경우 어떻게해야합니까? 감사 – pierrotlefou

1

이를 사용할 수 있습니다

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

dump 방법은 간단 str == eval(str.dump)을 만드는 방법으로 문자열을 반환합니다. 즉, 따옴표가 포함되어 있으므로이를 자르려면 [1..-2]이 필요합니다.

관련 문제