will_paginate предел и порядок не работает - PullRequest
3 голосов
/ 01 ноября 2011

Я использую will_paginate для вложенных заметок в представлении контактов.Контроллер контактов выглядит следующим образом:

    @contact = Contact.find(params[:id], :include => :notes)
@notes = @contact.notes.paginate(:page => params[:page], :per_page => 5, :order => "created_at ASC")

Представление отображения контактов имеет тег <%= will_paginate @notes %>.Это работает, но порядок сортировки неправильный, он показывает все 6 нот вместо 5, а нумерация страниц вверху переворачивается, это «следующий, 2,1, предыдущий» вместо «предыдущий, 1,2, следующий»???

Ответы [ 5 ]

3 голосов
/ 04 ноября 2011

Пытались ли вы переместить порядок в область действия?

В вашей модели может быть область действия, например

scope :order_by, lambda { |o| { :order => o } }

, и затем напишите свою строку в виде страницы как

@notes = @contact.notes.order_by("created_at ASC").paginate(:page => params[:page], :per_page => 5)
0 голосов
/ 24 ноября 2011

Как глупо!В конце концов обнаружил проблему, элементы имели «float: right», что вызвало обратный порядок ....

0 голосов
/ 10 ноября 2011

Вы указали :order => "created_at ASC" для метода paginate вместо активного объекта, который вы хотите каким-либо образом отсортировать.Я не смог найти точную точку в самоцвете will_paginate, но держу пари, что метод помощника вида will_paginate проверяет порядок, чтобы увидеть, идет ли он слева направо или справа налево.

Измененныйверсия ответа Simmo, включающая предложение Дэна Сиверса, должна быть правильной:

@notes = @contact.notes.order("created_at ASC").paginate(:page => params[:page], :per_page => 5)

0 голосов
/ 10 ноября 2011

Вы можете сделать это:

@notes = @contact.notes.paginate(:page => params[:page], :per_page => 5, :order => "notes.created_at ASC")

class Contact < ActiveRecord::Base
  has_many :notes,:order => "...." #remove this order option if you did
end

class Note < ActiveRecord::Base
  default_scope :order => "..." # remove this order option if you did
end
0 голосов
/ 01 ноября 2011

Моей первой мыслью было, что :include => :notes может запутать will_paginate.Вы пытались пропустить это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...