Хотите показать первые 50 или 60 слов текстового поля в рубине? - PullRequest
3 голосов
/ 03 апреля 2009

У меня есть текстовое поле истории и я хочу показать первые несколько строк - скажем, первые 50 слов этого поля - на странице снимка. Как я могу сделать это в Ruby (на Rails)?

Ответы [ 3 ]

6 голосов
/ 03 апреля 2009

Если ваши слова разделены пробелом, вы можете сделать что-то вроде этого.

stories.split(' ').slice(0,50).join(' ')
4 голосов
/ 03 апреля 2009

В основном так же, как ответ Аарона Хинни , но постарается сохранить 3 полных предложения (затем обрезать до 50 слов, если предложения слишком длинные)

def truncate(text, max_sentences = 3, max_words = 50)
  # Take first 3 setences (blah. blah. blah)
  three_sentences = text.split('. ').slice(0, max_sentences).join('. ')
  # Take first 50 words of the above
  shortened = three_sentences.split(' ').slice(0, max_words).join(' ')
  return shortened # bah, explicit return is evil
end

Кроме того, если в этом тексте есть какой-либо HTML, мой ответ на «Усеченная уценка?» может пригодиться

0 голосов
/ 28 сентября 2009

Используется нечто очень похожее в приложении Rails для расширения ("monkey patch") базового класса String.

Я создал lib/core_extensions.rb, который содержит:

class String
  def to_blurb(word_count = 30)
    self.split(" ").slice(0, word_count).join(" ")
  end
end

Затем я создал config/initializers/load_extensions.rb, который содержит:

require 'core_extensions'

Теперь у меня есть метод to_blurb() для всех моих объектов String в приложении Rails.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...