Rails 5.2 не может разбивать на страницы с каминари и уведомлениями - PullRequest
0 голосов
/ 03 сентября 2018

Некоторые из моих гемфайлов:

gem 'rails', '~> 5.2'
gem 'notifications', '~> 0.6.0'
gem 'kaminari'

Мой notifications_controller.rb как этот:

# notifications_controller.rb

module Notifications
  class NotificationsController < Notifications::ApplicationController
    def index
      @notifications = notifications.includes(:actor).order("id desc").page(params[:page])
      unread_ids = @notifications.reject(&:read?).select(&:id)
      Notification.read!(unread_ids)
      @notification_groups = @notifications.group_by { |note| note.created_at.to_date }
    end

    def clean
      notifications.delete_all
      redirect_to notifications_path
    end

    private

    def notifications
      raise "You need reqiure user login for /notifications page." unless current_user
      Notification.where(user_id: current_user.id)
    end
  end
end

My routes.rb о таких уведомлениях:

mount Notifications::Engine, at: "notifications"

My index.html о таких уведомлениях:

# notifications/notifications/index.html.erb

<div class="paginationBox">
   <%= paginate @notifications,left:2,right:1,window: 1 %>
</div>

С помощью вышеуказанных кодов я могу получать правильные уведомления, но я не могу выполнить пейджинг на все уведомления. У меня была такая ошибка:

NoMethodError - undefined method `total_pages' for #<Notification::ActiveRecord_Relation:0x00007fcfacae6dd8>:
  app/views/notifications/notifications/index.html.erb:33:in `_app_views_notifications_notifications_index_html_erb__2430601159943313679_70264929101860'

Если я изменю , действие index из notifications_controller.rb на

@notifications = notifications.includes(:actor).order("id desc").page(params[:page]).per(10)

Я получаю ту же ошибку неопределенного метода total_pages ....

Если я просто поменяю index.html.erb уведомлений на

<div class="paginationBox">
    <%= paginate@notifications.page(params[:page]).per(10),left:2,right:1,window: 1 %>
 </div>

Он не отображает никаких ошибок, но kaminari не может выполнить пейджинг всех уведомлений.

Итак, где у меня были ошибки? Не могли бы вы мне помочь ? Спасибо!

...