Учитывая объект @comments, где где-то от 1 до 100 с, как получить 5 лучших, объединить и усечь? - PullRequest
0 голосов
/ 01 февраля 2012

Я хочу создать предварительный просмотр комментария.У меня есть @comments, в котором есть 1 или комментарий комментариев.

Как я могу принять до 5 комментариев.Объедините их в одну строку, расположенную на расстоянии друг от друга.А потом взять первые 100 символов?Где, если будет менее 100 символов, он не сломается?

Спасибо

Ответы [ 2 ]

1 голос
/ 02 февраля 2012

Используйте помощник truncate Rails:

truncate(@comments.take(5).join(" "), :length => 100)

С помощью усечения вы можете поставить «...» в конце или не разделять слово (используя :separator)

(Обратите внимание, что было бы лучше перенести некоторую логику создания фрагмента в модель)

0 голосов
/ 02 февраля 2012

(Предположим, что содержание / тело комментария доступно через: контент)

@comments[0...5].map(&:content).join(' ').first(100)

Не сломается, если будет меньше 100 символов.

Но разве вы не можете получить только первые 5 комментариев из БД вместо того, чтобы получить все комментарии и сохранить только 5 из них?

Это было бы намного эффективнее.

Например:

@post.comments.select(:content).limit(5).map(&:content).join(' ').first(100) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...