Home > Net >  the Ransack gem does not find the result
the Ransack gem does not find the result

Time:12-05

I am using the Ransack gem, I have a patient model, I am following the documentation, and I cannot get it to work. I have also seen many blogs about it but nothing is working for me. Hope someone can help me I show the code of the view and the controller

my controller:

def index
    @q = Patient.ransack(params[:q])
    @Patients = @q.result(distinct: true)
    @pagy, @patients = pagy(current_user.patients.order(apellido: :asc), items:20)
   
  end

my view:

<%= search_form_for @q do |f| %>

<%= f.text_field :apellido_cont, class: 'form-control' %>
<%= f.submit class: 'btn btn-primary' %>
<% end %>

    <div class="row">
        <div class="col-xl-3">
            <h3>Mis pacientes</h3>
        </div>
        <div class="col-xl-6">
            <div class="form-group has-search">
                <span class="fa fa-search form-control-feedback"></span>
                <input type="text" class="form-control" placeholder="Buscar">
            </div>
        </div>
        <div class="col-xl-3">
            <%= link_to new_patient_path, class:'nuevo' do %>
                  <i class="fas fa-plus"></i> NUEVO PACIENTE
            <% end %>
        </div>
    </div>
 <div class="alertas">
    <% if flash[:notice] %>
    <div class="alert alert-success" role="alert"><%= flash[:notice] %></div>
  <% end %>
 </div>

    <table class="table table-hover">
        
        <thead>
            <tr>
                <th scope="col">Nombre</th>
                <th scope="col">Contacto</th>
                <th scope="col">Edad</th>
            </tr>
        </thead>
        <% if @patients.each do |patient| %>
        <tbody>
            <tr>
                <td class="datos"><%= patient.apellido %> <%= patient.nombre %></td>
                <td><i class="fas fa-mobile-alt"></i> <span><% if patient.telmovil.blank? %>No hay dato<% else %><%= patient.telmovil %><% end %></span></td>
                <td><%= patient.age %></td>
                <td><%= link_to patient_path(patient), class:'ver' do %>
                  <i class="far fa-eye"></i>
                <% end %></td>
            </tr>

            <% end.empty? %>
            <h5 class="titulo">No tienes ningun paciente.</h5>
            <% end %>
        </tbody>
    </table>
    <div class="paginacion mt-3">
        <%== pagy_bootstrap_nav(@pagy) if @pagy.pages > 1 %>
    </div>
</div>

CodePudding user response:

so I'm happy I came across this post. I have been using kaminari for years and had no idea about pagy and now I'm excited to try it!

My experience is with kaminari, so I had to google usage with pagy. It looks like to me you need to pass the entire query to the pagy method.

ie:

@pagy, @patients = pagy(Patient.ransack(params[:q]).result(distinct: true))

Hopefully that works!

  • Related