Albo wyszukiwanie albo sortowanie w index

Cześć,
Mam takie pytanie z cyklu “zielony pyta” :wink:

Mam dwie funkcje, które muszę wykonać na widoku indeksu tzn. wyszukiwanie i sortowanie. Obie rzeczy mi działają… ale nie razem :smile:

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?

Z góry wielkie dzięki za pomoc.

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ść.

Dzięki.