2011-08-18 22 views
7

Quiero paginar mensajes por mes, así que añadió siguiente alcance en Post modelopaginación Mes 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 

En mi controlador puse

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

En vista

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

Problemas:

  1. paginación no funciona por mes, quiero mostrar todos los resultados de un mes en una página, reemplazando params [: page] por params [: month] = 2 o params [: month] = Feb
  2. ¿Cómo veo 'Agosto de 2011' en lugar de 1,2
  3. mes y el año de bucle como cuando usted mientras anterior Goto en 'Jan 2011' lo hará Goto 'Dic 2010'

Respuesta

7

supongo que esto no es realmente una cuestión de la paginación Tratar con el valor de params [: month] para la consulta es algo diferente del cambio de desplazamiento de página. Es posible que no necesites una biblioteca de paginación para eso.

¿Qué tal si simplemente creamos esos enlaces de esta manera?

controlador:

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

Por supuesto se puede combinar esta consulta con paginación normal si es necesario. Pero los enlaces de paginación no deben mezclarse con los enlaces de mes en ese caso.

Cuestiones relacionadas