2016-04-18 2 views
1

Ich habe einige Methoden getestet, um die ersten 3 Instanzen meiner Klasse für eine Ruby on Rails-Anwendung zu drucken. Ich habe schon die folgenden Arbeiten:Zugriff auf die ersten X-Elemente in einer Klasse (Ruby/Rails)

<%@posts.each do |post| %> 
      <div class ="post content" > 
       <h2 class="title"><%=post.title%></h2> 
       <p class="date"><%= post.created_at.strftime("%B, %d, %Y")%></p> 
       <p class="body"><%=post.body%></p> 
      </div> 
    <% end %> 

Aber ich versuche, das Gleiche zu tun, sondern nur Drucke die ersten drei Elemente der @posts variabel.

.first (3) und .find (: id) haben nicht funktioniert und ich bin ratlos bei der Klassenvariablen.

Danke.

+1

wie kommt '@ posts.first (3) .each' nicht funktioniert hat? –

+0

Nicht ganz sicher, die erste Methode ist nicht einen Fehler, aber es ist auch nicht etwas auf die divs wie gewünscht – Cdok

Antwort

1

Sie möchten take verwenden.

<% @posts.take(3).each do |post| %> 

first Arbeiten in ähnlicher Weise (aber es ordnet nach id) und soll die Arbeit auch erledigen.

PS: Sie sollten diese Logik in der Steuerung verschieben.

+0

.Take (n) funktioniert für mich mit jedem. Vielen Dank! Löste mein Problem, – Cdok

1

Wenn Sie nur 3 posts und erfordern nicht den Rest irgendwo in Ihrer Sicht dann sie in Ihrem Controller herauszufiltern und Abfrage nicht für nicht verwendete Modelle.

In Ihrem Controller:

@posts = Post.limit(3) # Post.where(x: 'y').limit(3) 
Verwandte Themen