Как указать поле поиска для Elastic Search - FATAL -: [...] ArgumentError (необходимо указать поля для поиска): - PullRequest
0 голосов
/ 04 декабря 2018

Мое приложение rails 5 развернуто на Heroku, но функция поиска выдает статус 500 и сообщает, что мне нужно указать поле поиска для Elastic Search.Любая помощь будет принята с благодарностью.

репо: https://github.com/GBressler/moldy-eggplants

Журнал Heroku: 2018-12-03T20: 58: 37.320538 + 00: 00 app [web.1]: I, [2018-12-03T20: 58: 37.320469 # 4] ИНФОРМАЦИЯ -: [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] Завершено 500Внутренняя ошибка сервера в 68 мс (ActiveRecord: 0,0 мс) 2018-12-03T20: 58: 37.399605 + 00: 00 app [web.1]: F, [2018-12-03T20: 58: 37.399462 # 4] FATAL -:[cb92c5ee-9b97-4939-944e-14a06610a61b] 2018-12-03T20: 58: 37.399680 + 00: 00 app [web.1]: F, [2018-12-03T20: 58: 37.399609 # 4] FATAL -:[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] FATAL -: [cb92c5ee-9b97-4939-944e-14a06610a61b] 2018-12-03T20: 58: 37.399827 + 00: 00 app [web.1]: F, [2018-12-03T20: 58: 37.399766 # 4] FATAL -: [cb92c5ee-9b97-4939-944e-14a06610a61b] app / controllers / movies_controller.rb: 8: в `search '2018-12-03T20: 58: 37.398344 + 00: 00 heroku [router]: at = информационный метод = GET path =" /фильмы / поиск? 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= Служба 0 мс = состояние 86 мс = 500 байт = протокол 1827 = https

1 Ответ

0 голосов
/ 04 декабря 2018

Похоже, что ваш атрибут параметра поиска не внесен в белый список вашего контроллера фильмов.

# 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

Теперь при отправкеparams, просто убедитесь, что он обернут в объект фильма Parameters: {"utf8"=>"✓", "movie" => {"search"=>"deadpool"}}

Теперь просто укажите его соответствующим образом в строке 8 вашего контроллера, поэтому вместо params[:search] вы теперь будете использовать movie_params[:search].Не проверял, дайте мне знать, если получится.

...