# truncates a string based on word boundaries rather than # actual length def truncate_words(text, num_words = 30, end_string = '...') return unless text words = text.split() words[0..(num_words-1)].join(' ') + (words.size > num_words ? end_string : '') end