【问题标题】:Clean redirect from JS using Rails Turbolinks (with Url params)使用 Rails Turbolinks 从 JS 清除重定向(使用 Url 参数)
【发布时间】:2020-06-20 17:31:40
【问题描述】:

启动 Rails 网址:/analytics?param1=a&param2=b

如果用户更改日历日期,它会触发一个带有新选定日期(开始日期和结束日期)的 JS 函数。 然后我必须将它们与之前的 params1 和 params2 一起传递给控制器​​并重新加载页面。

新网址: /analytics?param1=a&param2=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(....)
    });

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-6 turbolinks


    【解决方案1】:

    根据您所需的浏览器支持级别,您可以使用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

    【讨论】:

      猜你喜欢
      • 2015-03-19
      • 1970-01-01
      • 2014-08-10
      • 2011-07-22
      • 2015-06-16
      • 1970-01-01
      • 2021-01-02
      • 2022-11-05
      • 2017-01-12
      相关资源
      最近更新 更多