在Rails中记住请求中的多个参数的正确方法

时间:2013-05-20 08:39:37

标签: ruby-on-rails ruby-on-rails-3

我的应用程序具有“主”页面,其中大部分操作都会发生:在(分页)表格中有过滤标签和结果列表,还有可能在“购物车”中选择部分或全部结果

此页面必须跟踪很多内容:选择了哪些标签,选择了哪些项目,以及结果表的排序方式以及它所在的页面。一切都必须坚持下去,所以如果我选择一个新标签,页面必须部分重新加载,但要记住所有内容(排序,选择的内容)。

现在我正在使用参数处理所有内容,并且对于页面上执行的每个操作,所有链接(选择标记/项目,更改页面,排序表)都会更新,以包含先前的参数+相关的新添加。显然,这很有效,但感觉效率低下,因为我必须重新加载更多页面而不是我想要的。这种情况通常如何处理?我根本无法在谷歌上找到那么多信息,但这并不是一种特别罕见的情况。

tl; dr:如何最好地确保所有链接(到同一页面)始终包含先前选择的所有内容+新操作。有很多链接(每个标签选择/取消选择一个,每个结果项一个选择/取消选择,每个排序选项一个,每页一个)

2 个答案:

答案 0 :(得分:4)

有五种方法可以做到:

方法1:按参数

你提到过这个。我从来没有想过这个,因为它太麻烦了。无论如何,对于非常简单的案例,它仍然是一个解决方案。

方法2:按cookie

将设置保存到cookie并读取控制器中的cookie以排列布局设置。

方法3:按LocalStorage

与cookie类似但允许更多空间。

方法4:按会话

如果您使用ActiveRecord保存会话,这可能是纯页面加载的最佳解决方案。将用户首选项保存到会话中并将其加载到下一个布局中。

方法5:使用Ajax

这是IMO的最佳解决方案。而不是整页加载,使用Ajax刷新/检索您需要的更改。与上述方法一起使用,用户甚至可以继续他的最后偏好。这是最强大的,应该适用于看起来像网络应用程序而不是网站的情况。

答案 1 :(得分:0)

您是否尝试过为所有这些属性创建模型?并且只需在页面加载时加载'latest',如果你不需要它们,你总是可以为该会话设置一个标志。