将索引中的meta_search gem与现有的地理编码器gem搜索(rails)集成

Wil*_*nis 6 sorting search ruby-on-rails filter meta-search

我已经使用地理编码器实现了基于位置的搜索,并且在集成meta_search gem时遇到了问题.我正在尝试将meta_search集成到我的内容中,object_controller index以允许用户在:attributes按位置搜索后按对象对搜索结果进行过滤和排序.

我的object_controller:

def index 
  if params[:search].present?
   @objects = Object.near(params[:search], 50, :order => :distance).paginate(:page => params[:page], :per_page => 9)
  else
   @objects = Object.paginate(:page => params[:page], :per_page => 9)
  end
end
Run Code Online (Sandbox Code Playgroud)

知道如何最好地将@search集成到meta_search gem所需的索引中吗?

以下是meta_search github为索引推荐的内容:

def index
  @search = Article.search(params[:search])
  @articles = @search.all   # load all matching records
  # @articles = @search.relation # Retrieve the relation, to lazy-load in view
  # @articles = @search.paginate(:page => params[:page]) # Who doesn't love will_paginate?
end
Run Code Online (Sandbox Code Playgroud)

非常感谢,

Car*_*III 1

我相信geocodermeta_searchquery 方法都会返回一个,ActiveRecord::Relation因此您应该能够链接它们:

@objects = Object.near(params[:search], 50, :order => :distance).search(params[:search]).relation.paginate(:page => params[:page], :per_page => 9)
Run Code Online (Sandbox Code Playgroud)

或者如果您需要单独的搜索对象:

@search = Object.near(params[:search], 50, :order => :distance).search(params[:search])
@objects = @search.relation.paginate(:page => params[:page], :per_page => 9)
Run Code Online (Sandbox Code Playgroud)