Displaying Only the first x words of a string in rails

前端 未结 4 808
眼角桃花
眼角桃花 2020-12-31 08:47
<%= 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 st

相关标签:
4条回答
  • 2020-12-31 09:09

    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...
    
    0 讨论(0)
  • 2020-12-31 09:28

    Try the following:

    'this is a line of some words'.split[0..3].join(' ')
    => "this is a line" 
    
    0 讨论(0)
  • 2020-12-31 09:30

    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..."
    
    0 讨论(0)
  • 2020-12-31 09:35
       # Message helper
       def content_excerpt(c)
         return unlessc
         c.split(" ")[0..4].join + "..."
       end
    
       # View
       <%= message.content_excerpt %>
    

    But the common way is truncate method

       # Message helper
       def content_excerpt(c)
         return unless c
         truncate(c, :length => 20)
       end
    
    0 讨论(0)
提交回复
热议问题