Paginator показывает странный результат. Почему?

Я использую kaminari для разбиения на страницы. Затем у меня есть 3 модели, такие как User, Community и Uniquecode.

Я столкнулся с проблемой, в которой количество отображаемых записей варьируется (меняется) в каждом параметре [: страница].

Кроме того, если я поставлю <% @uniquecode_count %>, он вернет «1»… Однако, поскольку есть 3 связанные записи, должно быть «3».

Это действительно странно. В моем случае. Я связал 3 записи с уникальным кодом.
Поскольку я добавил paginates_per 1 в модель с уникальным кодом, на каждой странице должна отображаться только одна запись. Однако результат

  • На странице. 1 показывает 3 записи
  • На странице. 2 показывает 2 записи
  • На странице. 3 показывает 1 запись

Почему это делает? Я никогда не видел, чтобы Каминари делал это.

Может ли кто-нибудь помочь мне решить эту проблему?

Я определил ассоциацию следующим образом

User has_many :communities
User has_many :uniquecodes

Community belongs_to :user
Community has_many :uniquecodes

Uniquecode belongs_to :user
Uniquecode belongs_to :community

модель уникального кода

paginates_per 1

контроллер

@user = User.find(params[:id])
@uniquecodes = @user.uniquecodes.page(params[:page])
@uniquecodes_count = @uniquecodes.count

просмотреть

<%= paginate @uniquecodes, :window => 4 %>
<% @uniquecodes.recent.each do |uniquecode| %>   
    <%= render 'uniquecodes/uniquecode', :uniquecode => uniquecode %>
<% end %>

<% @uniquecode_count %>  => this shows '1'. It has to show '3' though.

person MKK    schedule 24.01.2013    source источник
comment
Почему в <% @uniquecodes.recent.each do |uniquecode| %> есть recent?   -  person Marcel Hebing    schedule 25.01.2013


Ответы (2)


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

person BvuRVKyUVlViVIc7    schedule 24.01.2013
comment
Я не использую никакого порядка, как вы видите здесь. все, что у меня есть scope :recent, lambda { |n = 10| includes(:user).where('users.deleted_at' => nil).order("users.last_active_at DESC").limit(n) } в моей модели уникального кода. Но я не использую это здесь. - person MKK; 25.01.2013
comment
область видимости: недавняя, лямбда { |n = 10| include(:user).where('users.deleted_at' =› nil).order(users.last_active_at DESC).limit(n).order(uniquecodes.created_at desc) } - person BvuRVKyUVlViVIc7; 25.01.2013
comment
Спасибо, но результат тот же :( - person MKK; 25.01.2013

Заменять

@uniquecodes = @user.uniquecodes.page(params[:page])

by

@uniquecodes = Kaminari.paginate_array(@user.uniquecodes).page(params[:page])
person Marcel Hebing    schedule 24.01.2013