Domanda

Modifica Sembra che ho capito -. Ho dovuto chiamare impaginare dopo la chiamata a all da Searchlogic

Sto cercando di utilizzare entrambi questi strumenti per consentire agli utenti di cercare i contatti e restituire un elenco impaginato (o l'intero elenco impaginato se non entrano alcun criterio di ricerca). Comunque io sono sicuro del modo corretto di loro catena insieme, e quello che sto cercando è mi dà errori.

Qui è il mio controller:

class ContactsController < ApplicationController
  def index
    @search = Contact.search(params[:search]).paginate(:page => params[:page])
    @contacts, @contacts_count = @search.all, @search.count
  end
end

Questo mi dà la Undefined method 'all' for WillPaginate errore. Rimozione del tutto mi dà un errore perché la vista è alla ricerca di un percorso che ha la parola "contatto" 20 volte (per esempio contact_contact_contact..._path), presumibilmente perché il default "per pagina" è 20.

Che cosa sto facendo di sbagliato? Mi piacerebbe avere la ricerca, ordinamento e impaginazione tutto in questa pagina.

È stato utile?

Soluzione

Mi stavo confuso da questo. Si vuole fare quanto segue:

class ContactsController < ApplicationController
  def index
    @search = Contact.search(params[:search])
    @contacts = @search.paginate(:page => params[:page])
  end
end

Secondo lei basta chiamare @ contacts.total_entries per ottenere il conteggio totale (will_paginate aggiunge automaticamente che in).

Non appena si chiami .paginate si innesca la query. Quindi, quando si, anche se si pensa che si sta impostando @search a un oggetto Searchlogic, non sei. Si sta impostando ad una matrice WillPaginate che non ha alcun metodo di .all che si può chiamare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top