Как уже упоминалось работником, точная причина ошибки в том, что вы уже определили метод search
, который вы пытаетесь вызвать изнутри себя, без ожидаемых параметров.
То, что вам нужно вызвать, это метод solr_search
, который является фактическим методом, который определяет Sunspot (названный таким образом, чтобы вы могли предоставить свой собственный search
метод).
Кроме того, объект, возвращаемый методом solr_search
, является объектом поиска с некоторой метаинформацией о самом поиске. Вы, вероятно, хотите, чтобы экземпляры объектов ActiveRecord возвращались методом results
для этого объекта.
Сложив их вместе, вы захотите, чтобы ваш метод search
в итоге выглядел так:
def self.search(params)
if params[:search]
solr_search do
keywords params[:search]
paginate :page => params[:page], :per_page => 20
end.results
else
select('id,title,desc').paginate(:page => params[:page], :per_page => 20)
end
end