나는 가지고있다
@str = "<b>Hi</b>"
그리고 erb 관점에서 :
<%= @str %>
페이지에 표시되는 것은 : <b>Hi</b>
내가 정말로 원하는 것은 Hi 입니다. 문자열을 HTML 마크 업으로 “해석”하는 루비 방법은 무엇입니까?
편집 : 경우
@str = "<span class=\"classname\">hello</span>"
내 견해로는
<%raw @str %>
HTML 소스 코드는 <span class=\"classname\">hello</span
> 내가 정말로 원하는 위치입니다 <span class="classname">hello</span>
(큰 따옴표를 이스케이프 처리 한 백 슬래시 없음). 큰 따옴표를 “이스케이프 제거”하는 가장 좋은 방법은 무엇입니까?
답변
최신 정보
보안상의 이유로 sanitize
대신 사용 하는 것이 좋습니다 html_safe
. 링크
무슨 일이 일어나고 있는지, 보안 조치로 Rails는 악성 코드가 포함되어 있기 때문에 문자열을 피하고 있습니다. 그러나 Rails에 문자열이이라고 알려 html_safe
주면 바로 전달됩니다.
@str = "<b>Hi</b>".html_safe
<%= @str %>
또는
@str = "<b>Hi</b>"
<%= @str.html_safe %>
사용 raw
은 잘 작동하지만 문자열을 문자열로 변환 한 다음 html_safe를 호출하면됩니다. 문자열이 있다는 것을 알면 불필요한 단계를 건너 뛰고 진행 상황을 명확하게하기 때문에 html_safe를 직접 호출하는 것이 좋습니다. 문자열 이스케이프 및 XSS 보호에 대한 자세한 내용은 이 Asciicast에 있습니다.
답변
답변
당신이 경우에 rails
어떤 활용 Erubis을 – 그것이 할 수있는 멋진 방법을
<%== @str >
답변
simple_format(@str)
악성 코드를 제거 하는 을 사용할 수도 있습니다 . 여기에서 더 읽으십시오 : http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-simple_format
답변
비즈니스 로직과 컨텐츠를 혼합하고 있습니다. 대신 데이터를 페이지로 보낸 다음 JQuery와 같은 것을 사용하여 필요한 곳에 데이터를 배치하는 것이 좋습니다.
이는 웹 디자이너가 서버 측 코드를 따르지 않고 나중에 HTML을 수정할 수 있도록 모든 HTML을 HTML 페이지에 유지하는 이점이 있습니다.
또는 JavaScript를 사용하지 않으려면 다음을 시도하십시오.
@str = "Hi"
<b><%= @str ></b>
적어도이 방법으로 HTML은 HTML이 속한 HTML 페이지에 있습니다.
답변
또는 CGI.unescapeHTML 메서드를 사용해 볼 수 있습니다 .
CGI.unescapeHTML "<p>This is a Paragraph.</p>"
=> "<p>This is a Paragraph.</p>"
답변
번역하고 사람의 엉터리 코드 파일에서 원하는 코드를 선택하기 때문에 정규 표현식과 함께 content_tag를 사용할 수 있습니까?
API 문서를 훔치면이 번역 된 코드를 다음 content_tag
과 같이 보간 할 수 있습니다 .
<%= content_tag translated_tag_type.to_sym, :class => "#{translated_class}" do -%>
<%= translated_text %>
<% end -%>
# => <div class="strong">Hello world!</div>
코드를 모르는 경우 이런 종류의 사고는 번역 된 코드가 너무 호환되는지 확인합니다.