Пагинация солнечных пятен с каминари - PullRequest
7 голосов
/ 28 октября 2011

Я недавно решил перенести свой движок индексации с sphinx на solr.Воспользовавшись kaminari с think_sphinx, я решил попробовать использовать обычную нумерацию страниц в пятне https://github.com/sunspot/sunspot/pull/64 / https://github.com/sunspot/sunspot/pull/67,, чтобы избежать перехода к will_paginate.

Мой поиск обрабатывается следующим образом:

@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

Мое мнение не меняется по сравнению с тем, что было у меня при использовании думать_финкс:

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

Моя проблема заключается в том, что после изменения я постоянно получаю следующую ошибку при попытке выполнить поиск:

undefined method `current_page' for []:Array

Я использую последнюю версию солнечного пятна, которая, насколько мне известно, должна позволять мне использовать 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) 

Это отлично работало с моей старой установкой think_sphinx, так что я делаю не так?

1 Ответ

13 голосов
/ 17 января 2012

Вот как я использовал, и он прекрасно работает

@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

И во взглядах у меня это

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