2012-04-12 8 views
4

Ich benutze Ruby on Rails 3.2.1 und model @post. Problem ist, dass ich nur den ersten Absatz oder einige Wörter auf meiner ersten App-Seite wie eine Vorschau anzeigen möchte, nicht den ganzen Inhalt. Wie kann ich das machen?Nur einige Wörter aus dem Post als Vorschau anzeigen

Index:

<% @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>   
    <% } %> 

Antwort

5

Vielleicht verstehen Ich bin nicht die Frage aber, wenn der Inhalt ein String

posts.content[0,20] 

werden Sie die ersten 20 Zeichen geben.

+1

Aber kann missformed html – Edward

+0

Ich habe nur vermutet, dass der Inhalt sauber war. Keine gute Vermutung. – EricM

5

Sie können immer eine Kombination aus Santize und Excerpt versuchen, die beide Standard-ActionView-Helfer sind. Ich mag Auszug, wenn ich mehr von einer Stichprobe von Text will:

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

Wenn Sie wissen, dass Sie so etwas wie der erste Absatz oder einen Teil dieses Absatzes angezeigt werden sollen, dann denke ich, Kürzen wäre eine gute Option sein, wie @Edward Noten oder eine Kombination aus Sanitize und @ EricM Ansatz, wie zum Beispiel:

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

Dies funktioniert auch :)

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

Das sagt im Grunde "print Wort 0 bis 100"

0

Sie können <%= posts.content.truncate_words(18) %> über Rails 4.2 oder <%= posts.content[0,18] %> ersten 18 Zeichen.

Verwandte Themen