Kaminari Номера пагинации не отображаются - PullRequest
0 голосов
/ 03 мая 2019

Моя проблема в том, что нумерация страниц с помощью 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

Как я могу исправить эту проблему?

спасибо

1 Ответ

0 голосов
/ 06 мая 2019

Я нашел решение здесь .

Изменение предложения group by в области «basic_info» решило проблему:

От

.group("patients.id, first_name, last_name, gender")

К

группа (: id,: first_name,: last_name,: пол)

...