2015-06-08 43 views
0

如果我运行此查询:建立一个动态SearchKick查询抛出语法错误

self.send("search", where: {geo_location: { near:[ params[:latitude], params[:longitude] ]}}, boost_by: {luxury_shopper: {factor: 80}} && {movie_goer: {factor: 20}}) 

一切都很正常,我得到我的结果。但是,如果我运行此查询

booster = "boost_by: {luxury_shopper: {factor: 80}} && {movie_goer: {factor: 20}}" 

self.send("search", where: {geo_location: { near:[ params[:latitude], params[:longitude] ]}}, booster) 

我得到SyntaxError: unexpected ')', expecting =>,但我想不通为什么,或者更重要的是,如何写这个查询。助推器部分是动态的。我得到任意数量的属性以“提升”并将它们插入到查询中。

回答

1

你传递一个字符串,其中searchkick expects散,我不知道它会自动合并选项,下面应该做的工作:

booster = { boost_by: { luxury_shopper: {factor: 80}, movie_goer: {factor: 20} } } 
self.send("search", {where: {geo_location: { near:[ params[:latitude], params[:longitude] ]}}}.merge(booster)) 
+0

真棒!谢谢!这工作完美。 – Arel