Kaminari 和 Elasticsearch NoMethodError Rails

Kaminari and Elasticsearch NoMethodError Rails

我在 rails 应用程序上使用 Kaminari 和 Elasticsearch 时遇到一处错误。我找不到问题所在。我认为我的错误在我的控制器中。顺便说一下,我正在使用 active-admin 来管理我的应用程序。

undefined method `page' for "France":String

Elasticsearch.rb

case
when defined?(::Kaminari)
  Elasticsearch::Model::Response::Response.__send__ :include, Elasticsearch::Model::Response::Pagination::Kaminari
when defined?(::WillPaginate)
  Elasticsearch::Model::Response::Response.__send__ :include, Elasticsearch::Model::Response::Pagination::WillPaginate
end

控制器:

def result
  if params[:q].nil?
    @campings = []
  else
    @campings = Camping.__elasticsearch__.search params[:q].page(params[:page]).per(14)
  end
end

感谢您的帮助:)

问题是您在 params[:q] 上调用 page 方法,这是一个字符串。您应该用方括号括起对 search 的调用,以便 page 方法将在 search 的结果上调用,而不是在 params[:q].

上调用
@campings = Camping.__elasticsearch__.search(params[:q]).page(params[:page]).per(14)

希望对您有所帮助!