2015-06-08 2 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 =>, но я не могу понять, почему, или что еще более важно, как написать этот запрос. Усиливающая часть динамическая. Я получаю произвольное количество атрибутов для «boost by» и вставляю их в запрос.

ответ

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

Awesome! Благодаря! Это сработало отлично. – Arel