Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Displaying Only the first x words of a string in rails

<%= message.content %>

I can display a message like this, but in some situations I would like to display only the first 5 words of the string and then show an ellipsis (...)

like image 431
user852974 Avatar asked Aug 13 '11 07:08

user852974


2 Answers

In rails 4.2 you can use truncate_words.

'Once upon a time in a world far far away'.truncate_words(4)
=> "Once upon a time..."
like image 58
Radhika Avatar answered Nov 15 '22 22:11

Radhika


you can use truncate to limit length of string

truncate("Once upon a time in a world far far away", :length => 17, :separator => ' ')
# => "Once upon a..."

with given space separator it won't cut your words.

If you want exactly 5 words you can do something like this

class String
  def words_limit(limit)
    string_arr = self.split(' ')
    string_arr.count > limit ? "#{string_arr[0..(limit-1)].join(' ')}..." : self
  end
end
text = "aa bb cc dd ee ff"
p text.words_limit(3)
# => aa bb cc...
like image 35
gilsilas Avatar answered Nov 15 '22 20:11

gilsilas