Некоторые из моих гемфайлов:
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
не может выполнить пейджинг всех уведомлений.
Итак, где у меня были ошибки? Не могли бы вы мне помочь ? Спасибо!