Heads up: Rails offers two similar means for text truncation
Rails defines a
#truncate helper as well as a method
= truncate("my string", length: 5) = "my string".truncate(5)
Both are really similar; in fact, the helper invokes the method and improves it with two niceties: support for passing a block (which could e.g. render a "read on" link), and
Prefer the truncate() helper
The method knows nothing about
html_safe and will always return an unsafe string. FWIW, an HTML string may easily become invalid when truncated, e.g. when a closing tag gets chopped off.
However, when the input string is "fully html safe", i.e. contains no HTML, the truncated string should be
html_safe to avoid escaping regular characters during rendering. A real-world example is a double quote (
") that would be rendered as
" when the string is escaped.
To mitigate this, use the helper with
# Only pass escape:false when you're sure a truncated string is still html_safe = truncate("my string", length: 5, escape: false)