Месяц нумерации с каминари - PullRequest
7 голосов
/ 18 августа 2011

Я хочу разбивать посты по месяцам, поэтому я добавил следующую область в модель поста

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

В моем контроллере я поставил

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

В виде

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

Проблемы:

  1. разбиение на страницы по месяцам не работает, я хочу показать все результаты месяца на странице, заменив params [: page] на params [: month] = 2 или params [: месяц] = февраль
  2. Как просмотреть «август 2011» вместо 1,2
  3. Зацикливать месяц и год, как при переходе к предыдущему, тогда как в «январе 2011» оно будет идти «дек»2010 '

1 Ответ

7 голосов
/ 19 августа 2011

Полагаю, дело не в нумерации страниц. Работа со значением params [: month] для запроса отличается от переключения смещения страницы. Для этого вам может не потребоваться библиотека нумерации страниц.

Как насчет простого создания таких ссылок?

Контроллер:

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

вид:

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

Конечно, вы можете комбинировать этот запрос с обычным разбиением на страницы, если это необходимо. Но в этом случае ссылки на нумерацию страниц не следует смешивать со ссылками на месяцы.

...