存储过滤器状态以便稍后返回

时间:2013-12-05 12:49:38

标签: ruby-on-rails

我有一个带有索引视图和显示视图的应用程序,没什么特别的。索引视图具有筛选选项。我想要的是用户选择的过滤器选项以某种方式存储,因此当用户打开详细信息屏幕并稍后返回时,将显示相同的过滤记录。

后退按钮不是一个选项,因为除了打开详细信息屏幕并返回之外,还可以做更多的事情。我可以在之后的每个请求中添加过滤器参数,直到返回到索引页面,但这似乎有点麻烦。我有什么选择?

2 个答案:

答案 0 :(得分:1)

我通过创建一个名为manage_filter_state的私有方法在控制器中解决了这个问题。在根据过滤器参数的值检索所有记录之前,在索引操作中调用此方法。方法看起来像这样:

  private

  def manage_filter_state
    if params[:company]
      cookies[:company] = { value: params[:company], expires: 1.day.from_now }
    else
      if cookies[:company]
        params[:company] = cookies[:company]
      end
    end
  end

基本上,如果设置了param值,它会设置一个用于保持状态的cookie。稍后再次使用该参数的另一个值访问该页面时,它会覆盖该cookie。稍后访问时没有参数值,它会使用cookie值设置参数。

答案 1 :(得分:0)

通常不需要使用cookie。将其存储在会话[:name]

控制器内部有一个好地方。要概括问题,您可以在会话变量中存储任何QUERY,并在接收链接时附加。

离开控制器时重置。