如何为弹性搜索指定一个搜索字段-FATAL-:[...] ArgumentError(必须指定要搜索的字段):

时间:2018-12-03 21:45:47

标签: searchkick ruby-on-rails-5.2

我的rails 5应用程序已部署到Heroku,但是搜索功能的状态为500,并告诉我需要为Elastic Search指定搜索字段。任何帮助将不胜感激。

回购:https://github.com/GBressler/moldy-eggplants

Heroku日志: 2018-12-03T20:58:37.320538 + 00:00 app [web.1]:我,[2018-12-03T20:58:37.320469#4] INFO-:[cb92c5ee-9b97-4939-944e-14a06610a61b]参数:{“ utf8” =>“✓”,“ search” =>“ deadpool”} 2018-12-03T20:58:37.388702 + 00:00 app [web.1]:I,[2018-12-03T20:58:37.388584#4] INFO-:[cb92c5ee-9b97-4939-944e-14a06610a61b]在68毫秒内完成500个内部服务器错误(ActiveRecord:0.0毫秒) 2018-12-03T20:58:37.399605 + 00:00 app [web.1]:F,[2018-12-03T20:58:37.399462#4]致命-:[cb92c5ee-9b97-4939-944e-14a06610a61b] 2018-12-03T20:58:37.399680 + 00:00 app [web.1]:F,[2018-12-03T20:58:37.399609#4]致命-:[cb92c5ee-9b97-4939-944e-14a06610a61b] ArgumentError(必须指定要搜索的字段): 2018-12-03T20:58:37.399746 + 00:00 app [web.1]:F,[2018-12-03T20:58:37.399683#4]致命-:[cb92c5ee-9b97-4939-944e-14a06610a61b] 2018-12-03T20:58:37.399827 + 00:00 app [web.1]:F,[2018-12-03T20:58:37.399766#4]致命-:[cb92c5ee-9b97-4939-944e-14a06610a61b] app / controllers / movies_controller.rb:8:在“搜索”中 2018-12-03T20:58:37.398344 + 00:00 heroku [router]:at = info method = GET path =“” / movies / search?utf8 =%E2%9C%93&search = deadpool“ host = nameless-ravine-32235 .herokuapp.com request_id = cb92c5ee-9b97-4939-944e-14a06610a61b fwd =“ 179.6.192.118” dyno = web.1 connect = 0ms service = 86ms status = 500 bytes = 1827 protocol = https

1 个答案:

答案 0 :(得分:0)

您的电影控制器中的搜索参数属性似乎未列入白名单。

# Never trust parameters from the scary internet, only allow the white list through.
def movie_params
  params.require(:movie).permit(:title, :description, :movie_length, :director, :image, :rating)
end

理论上,您可以做类似...

 # Never trust parameters from the scary internet, only allow the white list through.
def movie_params
  params.require(:movie).permit(:title, :description, :movie_length, :director, :image, :rating, :search)
end

现在,发送参数时,只需确保将其包装在电影对象Parameters: {"utf8"=>"✓", "movie" => {"search"=>"deadpool"}}

现在仅在控制器的第8行中相应地引用它,因此现在使用params[:search]代替movie_params[:search]。没有测试,让我知道是否可行。