2012-04-12 99 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印字」。

相關問題