Чистое перенаправление с JS с использованием Rails Turbolinks (с параметрами URL) - PullRequest
2 голосов
/ 20 июня 2020

Начальный URL-адрес Rails: / analytics? Param1 = a¶m2 = b

Если пользователь изменяет календарные даты, он запускает функцию JS с новыми выбранными датами (start_date и end_date). Затем я должен передать их контроллеру вместе с предыдущими params1 и params2 и перезагрузить страницу.

Новый веб-URL: / analytics? Param1 = a¶m2 = b & start_date = YYYY & end_date = YYYY

Примечание: param1 и param2 могут отсутствовать и являться необязательными.

Я хочу использовать Turbolinks, но мне интересно, какой из них самый чистый.

  $('#reportrange').on('apply.daterangepicker', function(ev, picker) {
        let startDate = picker.startDate.format('YYYY-MM-DD');
        let endDate   = picker.endDate.format('YYYY-MM-DD');
        Turbolinks.visit(....)
    });

1 Ответ

1 голос
/ 23 июня 2020

В зависимости от требуемого уровня поддержки браузера вы можете сделать это с помощью URLSearchParams:

$('#reportrange').on('apply.daterangepicker', function(ev, picker) {
  const startDate = picker.startDate.format('YYYY-MM-DD');
  const endDate   = picker.endDate.format('YYYY-MM-DD');

  const params = new URLSearchParams(window.location.search)
  params.set('start_date', startDate)
  params.set('end_date', endDate)

  Turbolinks.visit(window.location.pathname + '?' + params.toString())
});

Если вы не хотите оставаться на том же пути, что и сейчас (я понял это из вашего вопроса, поэтому я предполагаю, что вы хотите остаться), тогда вам нужно изменить window.location.pathname на любой целевой путь.

См. https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams для документации.

...