使用 Rails Turbolinks 从 JS 清除重定向(使用 Url 参数)
Clean redirect from JS using Rails Turbolinks (with Url params)
正在启动 Rails 网络 url: /analytics?param1=a¶m2=b
如果用户更改日历日期,它会使用新选择的日期(start_date 和 end_date)触发 JS 函数。
然后我必须将它们与之前的 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(....)
});
根据您所需的浏览器支持级别,您可以使用 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。
正在启动 Rails 网络 url: /analytics?param1=a¶m2=b
如果用户更改日历日期,它会使用新选择的日期(start_date 和 end_date)触发 JS 函数。 然后我必须将它们与之前的 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(....)
});
根据您所需的浏览器支持级别,您可以使用 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。