Ruby on rails Rails-在返回时使用远程窗体维护参数(搜索历史记录)

Ruby on rails Rails-在返回时使用远程窗体维护参数(搜索历史记录),ruby-on-rails,ruby,ajax,erb,Ruby On Rails,Ruby,Ajax,Erb,我有一个Rails 5索引,带有一个过滤结果的搜索表单 所述表单使用remote:true点击控制器,更新结果。使用相关index.js.erb文件更新结果容器 我要解决的问题是,单击一个结果,然后再导航回并不能保持以前的搜索 我使用index.js.erb中的以下内容修复了此问题: 然而,这感觉很复杂,好像应该有一个更好的内在?解决方案 有人知道实现这一目标的常规方法吗?如果没有,任何关于有效方法的想法都将受到高度赞赏。提前感谢。您可以使用request.referer获取当前浏览器URL,并

我有一个Rails 5索引,带有一个过滤结果的搜索表单

所述表单使用remote:true点击控制器,更新结果。使用相关index.js.erb文件更新结果容器

我要解决的问题是,单击一个结果,然后再导航回并不能保持以前的搜索

我使用index.js.erb中的以下内容修复了此问题:

然而,这感觉很复杂,好像应该有一个更好的内在?解决方案

有人知道实现这一目标的常规方法吗?如果没有,任何关于有效方法的想法都将受到高度赞赏。提前感谢。

您可以使用request.referer获取当前浏览器URL,并使用ruby进行操作

使用ruby的完整代码应该是这样的:

index.js.erb

//更新历史记录的新字段 window.history.pushStatenull,null; //用于更新结果的现有代码 $'container'。替换为;
// 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') %>");