2011-08-18 32 views
7

voglio impaginare i messaggi di mese in modo da ho aggiunto seguente campo di applicazione in Post modellomese impaginazione con kaminari

class Post 
    include Mongoid::Document 
    include Mongoid::Timestamps 

    scope :by_month, lambda {|end_date| Post.order_by(:created_at => :asc).where(:created_at.gte => (end_date.to_date.beginning_of_month), :created_at.lte => (end_date.to_date))} 
end 

Nel mio controller metto

def show 
    @posts = Post.by_month(Time.now).page(params[:page]).per(20) 
end 

In considerazione

<%= paginate @posts, :theme => 'month_theme' %> 
<%= render @posts %> 

Problemi:

  1. paginazione non funziona per mese, voglio mostrare tutti i risultati di un mese in una pagina, sostituendo params [: pagina] per param [: mese] = 2 o param [: mese] = Feb
  2. Come fare considero 'agosto 2011' invece di 1,2
  3. mesi loop e l'anno come quando si goto precedente mentre nel 'gennaio 2011' lo farà goto 'Dicembre 2010'

risposta

7

suppongo che questo non è davvero una questione di impaginazione. Gestire il valore params [: month] per la query è qualcosa di diverso dalla commutazione dell'offset della pagina. Potresti non aver bisogno di una libreria di paginazione per questo.

Che ne dici di creare semplicemente questi collegamenti come questo?

regolatore:

@posts = Post.by_month(Time.parse(params[:month]) || Time.now) 

vista:

<% Post.only(:created_at).map {|p| p.created_at.to_date.beginning_of_month}.uniq.sort.each do |m| -%> 
    <%= link_to_unless_current m, :month => m %>&nbsp; 
<% end -%> 

Naturalmente è possibile combinare questa query con impaginazione normale, se necessario. Ma i link di impaginazione non dovrebbero essere mescolati con i link del mese in quel caso.

Problemi correlati