답변:
h
도우미 방법 :
<%=h "<p> will be preserved" %>
h
위한 별칭은html_escape
Ruby CGI 클래스를 확인하십시오. HTML과 URL을 인코딩하고 디코딩하는 방법이 있습니다.
CGI::escapeHTML('Usage: foo "bar" <baz>')
# => "Usage: foo "bar" <baz>"
ERB :: Util.html_escape 는 어디에서나 사용할 수 있습니다. require
Rails에서 사용하지 않고 사용 가능 합니다.
CGI.escapeHTML
아래
당신은 하나를 사용하고 있습니다 h()
또는 html_escape()
, 그러나 대부분의 사람들이 사용하는 h()
관례. in rails의 h()
약자입니다 html_escape()
.
컨트롤러에서 :
@stuff = "<b>Hello World!</b>"
귀하의 관점에서 :
<%=h @stuff %>
HTML 소스를 보면 실제로 데이터를 굵게 표시하지 않고 출력을 볼 수 있습니다. 즉, <b>Hello World!</b>
.
다음과 같이 표시됩니다. <b>Hello World!</b>
다른 방법의 비교 :
> CGI::escapeHTML("quote ' double quotes \"")
=> "quote ' double quotes ""
> Rack::Utils.escape_html("quote ' double quotes \"")
=> "quote ' double quotes ""
> ERB::Util.html_escape("quote ' double quotes \"")
=> "quote ' double quotes ""
Rails ActiveMailer 이스케이프와 호환되도록 직접 작성했습니다.
def escape_html(str)
CGI.escapeHTML(str).gsub("'", "'")
end
h()
따옴표를 이스케이프하는데도 유용합니다.
예를 들어, 텍스트 필드를 사용하여 링크를 생성하는보기가 있습니다 result[r].thtitle
. 텍스트에는 작은 따옴표가 포함될 수 있습니다. result[r].thtitle
확인 메서드에서 이스케이프하지 않으면 Javascript가 중단됩니다.
<%= link_to_remote "#{result[r].thtitle}", :url=>{ :controller=>:resource,
:action =>:delete_resourced,
:id => result[r].id,
:th => thread,
:html =>{:title=> "<= Remove"},
:confirm => h("#{result[r].thtitle} will be removed"),
:method => :delete %>
<a href="#" onclick="if (confirm('docs: add column &apos;dummy&apos; will be removed')) { new Ajax.Request('/resource/delete_resourced/837?owner=386&th=511', {asynchronous:true, evalScripts:true, method:'delete', parameters:'authenticity_token=' + encodeURIComponent('ou812')}); }; return false;" title="<= Remove">docs: add column 'dummy'</a>
참고 : :html
제목 선언은 Rails에 의해 마술처럼 이스케이프됩니다.
&<>"'/