Ограничение количества символов / слов в поле зрения - рубин на рельсах - PullRequest
31 голосов
/ 14 апреля 2010

Я показываю последние комментарии на домашней странице очень простого блогового приложения, которое я создаю в Ruby on Rails. Я хочу ограничить количество символов, отображаемых в столбце «тело» таблицы комментариев. Я предполагаю, что могу просто добавить что-то в конец кода для <% = h comment.body%>, но пока не знаю, что это будет, так как я новичок в Ruby и Rails.

Вот код, который у меня есть в файле /views/posts/index.html.erb:

<% Comment.find(:all, :order => 'created_at DESC', :limit => 5).each do |comment| -%>
    <p>
        <%=h comment.name %> commented on 
        <%= link_to h(comment.post.title), comment.post %><br/>
        <%=h comment.body %>
        <i> <%= time_ago_in_words(comment.created_at) %> ago</i>
    </p>
    <% end -%>

Ответы [ 3 ]

71 голосов
/ 14 апреля 2010

Попробуйте усечь помощник вида

<%=h truncate(comment.body, :length => 80) %>
26 голосов
/ 12 апреля 2014

Я просто нашел другой способ (если вы не хотите добавлять "...")

<%= comment.body.first(80) %>

Как сказано в RoR API для строки :

первый (предел = 1)

Возвращает первый символ. Если указан лимит, возвращает подстроку от начала строки до достижения предельного значения. Если заданный предел больше или равен длине строки, возвращает self.

comment = "1234567890"

comment.first(5)
# => "12345"

comment.first(10)
# => "1234567890"

comment.first(15)
# => "1234567890"
6 голосов
/ 21 июня 2016

Если вы используете rails 4.2 или выше, тогда вы можете использовать truncate_words метод.

Например:
"В мире, где все прекрасно" .truncate_words (3)

Вывод: "В мире ..."

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