2013-04-24 8 views
6

Voglio mostrare il post più recente nella visualizzazione dello spettacolo, con i prossimi cinque post più recenti nella barra laterale.Rails: mostra i 5 post più recenti escluso il post più recente

Attualmente, mostro il post più recente, ma la barra laterale include lo stesso post con i successivi 4 post più recenti.

Controller:

def show 
    @post = Post.find(params[:id]) 
    @posts = Post.includes(:comments).order("created_at DESC").limit(5) 
end 

Vista:

<div class="related-articles"> 
    <h2 class="headline">Related Articles</h2> 
    <% @posts.each do |post| %> 
     <div class="floatLeft"><%= link_to (image_tag post.image.url(:thumb)), post_path(post) %></div> 
     <h2 class="headline smaller-font"><%= link_to post.title, post %></h2> 
     <div class="image-remove"><%= raw truncate_html(post.body, length: 190) %> 
     <%= link_to "read more", post %></p></div> 
     <hr> 

<% end %> 

</div><!--related articles box--> 

Grazie molto.

risposta

11

offset è ciò che si vuole:

@posts = Post.includes(:comments).order("created_at desc").limit(4).offset(1) 

Ciò restituirà i messaggi 2-5, 2-6 se si desidera utilizzare limite (5)

+0

Grazie. Questo ha funzionato magnificamente. – user2299459

+1

Meglio e più chiaro di una fetta !, ho imparato qualcosa. – Fred

0

Dal momento che essi sono ordinate recente al più vecchio, provare

@posts = Post.includes(:comments).order("created_at DESC").limit(6) 
@posts.slice!(0)