2012-04-12 102 views
4

我正在使用Ruby on Rails 3.2.1和model @post。问题是我想仅在第一个应用页面上显示第一段或某些词,而不是所有内容。我该怎么做?只显示文章中的部分文字作为预览

指数:

<% @posts.each{|posts| %> 
     <h1 class="title"><%= link_to posts.title, posts %></h1> 
      <p class="byline" style="text-align: right; font-weight: bold;">Raksts izveidots: <%= posts.created_at.utc.strftime("%d.%m.%Y") %></p> 
      <div class="entry"> 
       <p><%= raw posts.content %></p> 
      </div> 
     <p class="meta"><a href="#" class="more">Read More</a> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <a href="#" class="comments">Comments</a> (33)</p>   
    <% } %> 

回答

5

也许我不理解的问题,但如果内容是一个字符串

posts.content[0,20] 

会给你前20个字符。

+1

但可能会留下格式不正确的html – Edward 2012-04-12 19:08:32

+0

我刚推测内容很干净。不是一个好的推定。 – EricM 2012-04-12 20:26:48

5

您总是可以尝试SantizeExcerpt的组合,它们都是标准的ActionView Helper。我喜欢摘录时,我想更多的文本中随机抽取的:

sanitize(excerpt(post.content,"Some key text",240)) 

如果你知道你要像第一段或段落的一部分显示的东西,那么我想截断将是一个很好的选择,因为@Edward笔记或消毒和@ ERicM的方式组合,如:

sanitize(posts.content[0,20]). 
3

这也适用:)

<%= posts.content.split[0..100].join(" ") %> 

这基本上说

0

您可以使用 <%= posts.content.truncate_words(18) %>以上的Rails 4.2 或 <%= posts.content[0,18] %>前18个字符 “0〜100印字”。

相关问题