限制视图中的字符/单词 - ruby​​ on rails

时间:2010-04-13 20:55:56

标签: ruby-on-rails ruby

我在Ruby on Rails上构建的一个非常简单的博客应用程序的主页上显示最近的评论。我想限制从comments表的“body”列显示的字符数。我假设我可以在<%= 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 -%>

4 个答案:

答案 0 :(得分:71)

尝试truncate查看助手

<%=h truncate(comment.body, :length => 80) %>

答案 1 :(得分:26)

我刚刚找到另一种方式(如果你不想添加“...”)

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

RoR API for String中所述:

  

首先(限制= 1)

     

返回第一个字符。如果提供了限制,则从字符串的开头返回子字符串,直到达到限制值。如果给定的限制大于或等于字符串长度,则返回self。

comment = "1234567890"

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

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

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

答案 2 :(得分:6)

如果您使用的是rails 4.2或以上,则可以使用truncate_words方法。

  

例如:
  &#34;在一切都很棒的世界里#34; .truncate_words(3)

     

输出:&#34;在一个世界......&#34;

答案 3 :(得分:0)

如果要限制字符数,也可以使用truncate方法。我正在使用它在引导行中仅显示足够的字符,以与在同一行中显示的图像的高度有些匹配。

<%= "#{message.truncate(charcount)}" %>