Provides a set of methods for working with text strings that can help unburden the level of inline Ruby code in the templates. In the example below we iterate over a collection of posts provided to the template and prints each title after making sure it doesn’t run longer than 20 characters:

  <% for post in @posts %>
    Title: <%= truncate(post.title, 20) %>
  <% end %>
Methods
Public Instance methods
auto_link(text, link = :all)

Turns all urls and email addresses into clickable links. The link parameter can limit what should be linked. Options are :all (default), :email_addresses, and :urls.

Example:

  auto_link("Go to http://www.rubyonrails.com and say hello to david@loudthinking.com") =>
    Go to <a href="http://www.rubyonrails.com">http://www.rubyonrails.com</a> and
    say hello to <a href="mailto:david@loudthinking.com">david@loudthinking.com</a>
     # File vendor/rails/actionpack/lib/action_view/helpers/text_helper.rb, line 119
119:       def auto_link(text, link = :all)
120:         case link
121:           when :all             then auto_link_urls(auto_link_email_addresses(text))
122:           when :email_addresses then auto_link_email_addresses(text)
123:           when :urls            then auto_link_urls(text)
124:         end
125:       end
concat(string, binding)

The regular puts and print are outlawed in eRuby. It’s recommended to use the <%= "hello" %> form instead of print "hello". If you absolutely must use a method-based output, you can use concat. It’s use like this <% concat "hello", binding %>. Notice that it doesn’t have an equal sign in front. Using <%= concat "hello" %> would result in a double hello.

    # File vendor/rails/actionpack/lib/action_view/helpers/text_helper.rb, line 13
13:       def concat(string, binding)
14:         eval("_erbout", binding).concat(string)
15:       end
excerpt(text, phrase, radius = 100, excerpt_string = "...")

Extracts an excerpt from the text surrounding the phrase with a number of characters on each side determined by radius. If the phrase isn’t found, nil is returned. Ex:

  excerpt("hello my world", "my", 3) => "...lo my wo..."
    # File vendor/rails/actionpack/lib/action_view/helpers/text_helper.rb, line 36
36:       def excerpt(text, phrase, radius = 100, excerpt_string = "...")
37:         if text.nil? || phrase.nil? then return end
38:         phrase = escape_regexp(phrase)
39: 
40:         if found_pos = text =~ /(#{phrase})/i
41:           start_pos = [ found_pos - radius, 0 ].max
42:           end_pos   = [ found_pos + phrase.length + radius, text.length ].min
43: 
44:           prefix  = start_pos > 0 ? excerpt_string : ""
45:           postfix = end_pos < text.length ? excerpt_string : ""
46: 
47:           prefix + text[start_pos..end_pos].strip + postfix
48:         else
49:           nil
50:         end
51:       end
highlight(text, phrase, highlighter = '<strong class="highlight">\1</strong>')

Highlights the phrase where it is found in the text by surrounding it like <strong class="highlight">I’m a highlight phrase</strong>. The highlighter can be specialized by passing highlighter as single-quoted string with \1 where the phrase is supposed to be inserted. N.B.: The phrase is sanitized to include only letters, digits, and spaces before use.

    # File vendor/rails/actionpack/lib/action_view/helpers/text_helper.rb, line 28
28:       def highlight(text, phrase, highlighter = '<strong class="highlight">\1</strong>')
29:         if text.nil? || phrase.nil? then return end
30:         text.gsub(/(#{escape_regexp(phrase)})/i, highlighter) unless text.nil?
31:       end
markdown(text)

Returns the text with all the Markdown codes turned into HTML-tags. This method is only available if BlueCloth can be required.

    # File vendor/rails/actionpack/lib/action_view/helpers/text_helper.rb, line 92
92:         def markdown(text)
93:           text.blank? ? "" : BlueCloth.new(text).to_html
94:         end
pluralize(count, singular, plural = nil)

Attempts to pluralize the singular word unless count is 1. See source for pluralization rules.

    # File vendor/rails/actionpack/lib/action_view/helpers/text_helper.rb, line 54
54:       def pluralize(count, singular, plural = nil)
55:          "#{count} " + if count == 1
56:           singular
57:         elsif plural
58:           plural
59:         elsif Object.const_defined?("Inflector")
60:           Inflector.pluralize(singular)
61:         else
62:           singular + "s"
63:         end
64:       end
simple_format(text)

Returns text transformed into html using very simple formatting rules Surrounds paragraphs with &lt;p&gt; tags, and converts line breaks into &lt;br /&gt; Two consecutive newlines(\n\n) are considered as a paragraph, one newline (\n) is considered a linebreak, three or more consecutive newlines are turned into two newlines

     # File vendor/rails/actionpack/lib/action_view/helpers/text_helper.rb, line 103
103:       def simple_format(text)
104:         text.gsub!(/(\r\n|\n|\r)/, "\n") # lets make them newlines crossplatform
105:         text.gsub!(/\n\n+/, "\n\n") # zap dupes
106:         text.gsub!(/\n\n/, '</p>\0<p>') # turn two newlines into paragraph
107:         text.gsub!(/([^\n])(\n)([^\n])/, '\1\2<br />\3') # turn single newline into <br />
108:         
109:         return '<p>' + text + '</p>' # wrap the first and last line in paragraphs before we're done
110:       end
strip_links(text)

Turns all links into words, like "<a href="something">else</a>" to "else".

     # File vendor/rails/actionpack/lib/action_view/helpers/text_helper.rb, line 128
128:       def strip_links(text)
129:         text.gsub(/<a.*>(.*)<\/a>/m, '\1')
130:       end
textilize(text)

Returns the text with all the Textile codes turned into HTML-tags. This method is only available if RedCloth can be required.

    # File vendor/rails/actionpack/lib/action_view/helpers/text_helper.rb, line 71
71:         def textilize(text)
72:           text.blank? ? "" : RedCloth.new(text, [ :hard_breaks ]).to_html
73:         end
textilize_without_paragraph(text)

Returns the text with all the Textile codes turned into HTML-tags, but without the regular bounding <p> tag. This method is only available if RedCloth can be required.

    # File vendor/rails/actionpack/lib/action_view/helpers/text_helper.rb, line 77
77:         def textilize_without_paragraph(text)
78:           textiled = textilize(text)
79:           if textiled[0..2] == "<p>" then textiled = textiled[3..-1] end
80:           if textiled[-4..-1] == "</p>" then textiled = textiled[0..-5] end
81:           return textiled
82:         end
truncate(text, length = 30, truncate_string = "...")

Truncates text to the length of length and replaces the last three characters with the truncate_string if the text is longer than length.

    # File vendor/rails/actionpack/lib/action_view/helpers/text_helper.rb, line 19
19:       def truncate(text, length = 30, truncate_string = "...")
20:         if text.nil? then return end
21:         if text.length > length then text[0..(length - 3)] + truncate_string else text end
22:       end