У меня есть индекс Rails 5 с формой поиска, которая фильтрует результаты.
Указанная форма использует remote: true
, чтобы поразить контроллер, обновляет результаты, использует соответствующий файл index.js.erb
для обновленияКонтейнер результатов.
Проблема, которую я решаю, состоит в том, что нажатие на результат с последующим переходом назад не поддерживает предыдущий поиск.
Я исправил это, используя следующее в index.js.erb
:
// new fields to update the history
const url = new URL(window.location);
url.searchParams.set('query', '<%= params[:query] %>');
url.searchParams.set('query_sort', '<%= params[:query_sort] %>');
window.history.pushState(null, null, url);
// existing code to update the results
$('#container').replaceWith("<%= escape_javascript(render partial: 'partial') %>");
Однако это кажется запутанным и, как будто должно быть лучшее (встроенное?) Решение.
Кто-нибудь знает об обычном способе достижения этого? Если нет, то любые идеи по эффективному подходу очень ценятся. Заранее спасибо.