我有一个rails应用程序,我正在寻找维修店。搜索类方法如下所示:
def self.search(params)
if params
repairshop = Repairshop.where(:approved => true)
if params[:radius].present?
repairshop = repairshop.near(params[:location], params[:radius]) if params[:location].present?
else
repairshop = repairshop.near(params[:location], 200) if params[:location].present?
end
if params[:keywords].present?
repairshop = repairshop.joins(:specializations).joins(:brands_we_services).where("LOWER(specializations.title) LIKE ? OR LOWER(brands_we_services.title) LIKE ? OR LOWER(repairshop.title) LIKE ?", "%#{params[:keywords].downcase}%", "%#{params[:keywords].downcase}%", "%#{params[:keywords].downcase}%")
end
repairshop.uniq
else
all
end
end
维修店可以有许多专业和品牌_we_services。因此,从其他参数中搜索所有名称非常重要。
一切正常。搜索控制器将我带到搜索页面。控制器动作如下:
def search
@repairshops = Repairshop.search(params)
end
搜索结果如下所示:
我的问题是:
在搜索页面的左侧,搜索框下方,我想提供用于过滤结果的构面。我想提供一些动态的方面。喜欢取决于搜索结果,它提供城市的方面(维修店的数量)等。
我不想使用弹性搜索或solr。 我想了解如何从头开始构建动态分面搜索,从搜索结果中构建构面的基础知识。
注意:我查看了四个方面,但无法理解如何使用我在维修服务模型中的复杂类方法搜索,并根据文档将其集成到控制器提供的class MovieSearch < FortyFacets::FacetSearch
中。
真的很感谢你的帮助。谢谢!