Моя проблема в том, что нумерация страниц с помощью kaminari не работает, если я установил нумерацию страниц больше 1. Панель нумерации страниц отображается только в том случае, если я установил 1 запись на страницу.
Если я установлю:
@p.result.page(params[:page]).per(1)
Я вижу полосу нумерации страниц (но есть только 2 страницы, с одной записью для просмотра ..)
Если я установлю:
@p.result.page(params[:page]).per(2) (or more)
Панель не видна, но я вижу 2 (или более) записей в таблице.
Хорошо: я обнаружил, что проблема связана с областью, которую я имею в модели пациента.
Если я не использую «basic_info», это работает.
@p = Patient.basic_info.ransack(params[:q]) (No pagination bar)
@p = Patient.ransack(params[:q]) (it works)
Почему? ..
В модели Patient.rb у меня есть:
scope :basic_info, -> {
self.left_joins(hospitalizations: :surgery)
.distinct
.select("patients.id,first_name,
last_name,
gender,
MAX(surgeries.surgery_date) as most_recent_surgery")
.group("patients.id, first_name, last_name, gender")
}
In Patient_Controller.rb:
@p = Patient.basic_info.ransack(params[:q])
@patients = @p.result.page(params[:page]).per(2)
index.html.erb пациента:
<tbody>
<% @patients.each do |patient| %>
<tr>
<td><%= patient.first_name %></td>
<td><%= patient.last_name %></td>
<td><%= patient.gender %></td>
<td>
<% if patient.most_recent_surgery %>
<%= patient.most_recent_surgery.to_time.strftime('%d-%m-%Y') %>
<% end %></td>
<td class="centra"><%= link_to t('edit'), edit_patient_path(patient) %></td>
<td class="centra"><%= link_to t('delete'), patient, method: :delete, data: { confirm: 'Eliminazione irreversibile. Continuare?' } %></td>
</tr>
<% end %>
</tbody>
<div style="text-align:center;"><%= paginate @patients %></div>
Полученные записи ограничены (я вижу только две строки в моем представлении datatables), и я не получил никаких ошибок, но нумерация страниц не отображается.
Я использую Rails 5.02
Как я могу исправить эту проблему?
спасибо