2011-10-28 34 views
7

Recentemente ho deciso di trasferire il mio motore di indicizzazione da sfinge a solr. Avendo usato kaminari con thinking_sphinx, ho deciso di provare a utilizzare l'impaginazione generica in sunspot https://github.com/sunspot/sunspot/pull/64/https://github.com/sunspot/sunspot/pull/67, per evitare di spostarmi su will_paginate.Impaginazione solare con kaminari

La mia ricerca è gestita come segue:

@search = Address.search do 
    fulltext params[:search] 
    with(:updated_at).greater_than(1.week.ago) 
    order_by :updated_at, :desc 
    paginate :page => params[:page], :per_page => 7 
end 

La mia opinione è invariato rispetto a quello che avevo quando stavo usando thinking_sphinx:

<%= render :partial => 'address' %> 
<%= paginate @addresses %> 

Il mio problema è che dopo il cambiamento che continuamente ottenere il seguente errore quando si cerca di eseguire una ricerca:

undefined method `current_page' for []:Array 

Sto usando l'ultima versione di macchie solari, che a mia conoscenza dovrebbe consentire me di utilizzare kaminari:

Using sunspot (1.3.0.rc3) from git://github.com/sunspot/sunspot.git (at master) 
Using sunspot_rails (1.3.0.rc3) from git://github.com/sunspot/sunspot.git (at master) 

questo ha funzionato perfettamente con la mia vecchia configurazione thinking_sphinx, così che cosa sto facendo di sbagliato?

+0

Beh mi sono stancato di cercare di farlo funzionare e passato a will_paginate, grandi opere adesso. – maecro

+2

c'è una gemma kaminari di macchie solari che fa sì che kaminari e macchie solari giochino bene insieme [https://github.com/richardiux/sunspot_with_kaminari](http://github.com/richardiux/sunspot_with_kaminari] funziona assolutamente bene per noi. –

+0

Avevo visto quella gemma ma trascurata in quel momento perché non sembrava esserci molta attività lì. Forse l'ho giudicato in modo un po 'aspro, ne darò un'altra occhiata. Saluti per la raccomandazione. – maecro

risposta

13

Ecco come ho usato e funziona benissimo

@search = Sunspot.search(Listing) do 
     if params[:category].present? 
     with :category_id, params[:category] 
     end 
     if params[:subcategory].present? 
     with :subcategory_id, params[:subcategory] 
     end 
     if params[:q].present? 
     keywords params[:q] do 
      fields :title, :description 
     end 
     end 
     paginate :page => params[:page], :per_page => SEARCH_RESULT_PER_PAGE 
    end 

E in vista ho questo

<%= paginate @search.hits %> 
+0

mi hai risparmiato un sacco di tempo! Grazie! – 23tux