Mam dwie funkcje, które muszę wykonać na widoku indeksu tzn. wyszukiwanie i sortowanie. Obie rzeczy mi działają… ale nie razem
W index.html.haml mam:
def index
if params[:query].present?
@minireports = Minireport.search(params[:query], load: true)
else
@minireports = Minireport.order(sort_column + " " + sort_direction)
end
end
Jedno mi wyszukuje w elasticsearch, a drugie mi sortuje kolumny jak się kliknie na jej nagłówek.
Problem w tym, że jak ktoś wyszuka obiekty i kliknie filtrowanie, to mu wyczyści wynik wyszukiwania bo wywoła index dla “order”.
Jak to teraz po ludzku połączyć, aby mi działało i sortowanie i filtrowanie?
Nie możesz tutaj łączyć szukania przez ElasticSearch z sortowaniem z ActiveRecord. Musisz zdecydować się na jedno rozwiązanie, którym zapewne będzie Elastic, więc całość powinna wyglądać w ten sposób:
search = Minireport.search(load: true) do
query { string params[:query] }
sort { by sort_column, sort_direction}
end
@minireports = search.results
Aaa rozumiem. Myślałem, że da się to jakoś zrobić. A czy sortowanie w Elastic jest “pewne” w sensie wyświetlania tego co jest w bazie. No bo jak rozumiem Elastic sortuje to, co ma zapisane w indeksie czy “przekazuje” kolejność i wyświetla “prawdziwe” obiekty? (update: no tak jest opcja :load, która decyduje o tym, czy ma zwaracać to co ma index czy z bazy.)
Przy tej funkcji po prostu muszę wywołać link_to z trzema parametrami.
Zaczyna mi to się już układać w jakąś całość.