module ERB::Util
def html_escape(s)
puts html_escape('is a > 0 & a < 10?')
<%=h @person.name %>
In your ERB templates, use this method to escape any unsafe content. For example:
This method is also aliased as h.
A utility method for escaping HTML tag characters.
def html_escape(s) s = s.to_s if s.html_safe? s else s.gsub(/[&"'><]/, HTML_ESCAPE).html_safe end end
def html_escape_once(s)
html_escape_once('<< Accept & Checkout')
# => "1 < 2 & 3"
html_escape_once('1 < 2 & 3')
A utility method for escaping HTML without affecting existing escaped entities.
def html_escape_once(s) result = s.to_s.gsub(HTML_ESCAPE_ONCE_REGEXP, HTML_ESCAPE) s.html_safe? ? result.html_safe : result end
def json_escape(s)
json_escape('{"name":"john","created_at":"2010-04-28T01:39:31Z","id":1}')
valid JSON. In particular double quotes are removed:
Note that after this operation is performed the output is not
# => is a \u003E 0 \u0026 a \u003C 10?
json_escape('is a > 0 & a < 10?')
using \uXXXX JavaScript escape sequences for string literals:
A utility method for escaping HTML entities in JSON strings
def json_escape(s) result = s.to_s.gsub(JSON_ESCAPE_REGEXP, JSON_ESCAPE) s.html_safe? ? result.html_safe : result end