2011-10-28 4 views
7

J'ai récemment décidé de porter mon moteur d'indexation de sphinx à solr. Ayant utilisé kaminari avec thinking_sphinx j'ai décidé d'essayer d'utiliser la pagination générique dans la tache solaire https://github.com/sunspot/sunspot/pull/64/https://github.com/sunspot/sunspot/pull/67, afin d'éviter d'utiliser move_paginate.pagination de taches solaires avec kaminari

Ma recherche est traitée comme suit:

@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 

Mon point de vue est inchangé par rapport à ce que j'avais quand j'utilisais thinking_sphinx:

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

Mon problème est que, après le changement que je cesse obtenez l'erreur suivante lorsque vous essayez d'effectuer une recherche:

undefined method `current_page' for []:Array 

J'utilise la dernière version de taches solaires, qui à ma connaissance devrait me permettre d'utiliser 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) 

Cela a parfaitement fonctionné avec mon ancienne configuration thinking_sphinx, donc ce que je fais mal?

+0

Eh bien, je suis fatigué d'essayer de le faire fonctionner et sont passés à will_paginate, fonctionne très bien à présent. – maecro

+2

il y a une gemme kaminari de tache solaire qui fait que kaminari et sunspot jouent bien ensemble [https://github.com/richardiux/sunspot_with_kaminari](https://github.com/richardiux/sunspot_with_kaminari) fonctionne absolument bien pour nous. –

+0

J'avais déjà vu ce petit bijou mais à l'époque il n'y avait pas beaucoup d'activité. Peut-être que je l'ai jugé un peu dur, je vais y jeter un autre coup d'oeil. Bravo pour la recommandation. – maecro

Répondre

13

Voilà comment je l'ai utilisé et il fonctionne très bien

@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 

Et dans les vues que j'ai cette

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

vous m'avez sauvé beaucoup de temps! Merci! – 23tux

Questions connexes