2011-01-19 2 views
0

내 질문은 this one과 관련이있다. 그러나 나는 HTML을 주입 할 수 있도록 "< % ="의 기본 레일즈 3 동작을 뒤집어 쓰려고 노력하고있다.레일 3 : HTML을 주입 할 수 있도록 ERB "<% ="기본 동작을 역전하는 방법은 무엇입니까?

제 시나리오에서는 HTML을 생성하는 오래된 Rails 2 플러그가 있습니다. 그러면 내보기는이 HTML을 페이지에 삽입해야합니다. 이 플러그인은 HTML html_to_show 변수에 저장 다음과 같이 작성하면

:

<p class="notice"><span></span>Sorry about this, but we have a problem...</p><p class="error"><span></span>Cannot go to next step</p> 

및보기에이 같은 html_to_show의 내용을 표시하려고 :

<%= html_to_show %> 

... 무엇을 내 브라우저에 다음과 같이 표시됩니다.

&lt;p class="notice"&gt;&lt;span&gt;&lt;/span&gt;Sorry about this, but we have a problem...&lt;/p&gt;&lt;p class="error"&gt;&lt;span&gt;&lt;/span&gt;Cannot go to next step&lt;/p&gt; 

위생 처리없이 Rails 3에 html_to_show의 내용을 그대로 주입 시키시겠습니까?

답변

7

짧은 답변 :

<%= html_to_show.html_safe %> 

긴 대답 :

레일은 XSS 공격으로부터 보호하기 위해 모든 HTML을 이스케이프합니다. .html_safe을 추가하면 이스케이프가 방지됩니다.

+0

@futureshocked : 레코드의 경우 : 'html_safe' 문자열 메소드와'raw' 헬퍼 스타일 메소드 모두 동일한 작업을 수행합니다. 그러나 플러그인을 업데이트하고 싶다면 문자열을보기 전에 'html_safe'로 표시하고 다시 할 필요는 없습니다. 하지만 HTML에 안전하지 않은 문자열을 추가하면 안전하지 않게되며 다시 표시해야합니다. – coreyward

3
<%= raw html_to_show %> 

그렇게해야합니다.