0

通常,索引页面有过滤、页面、排序的选项。在显示新的编辑页面后,您可能希望返回索引页面,并使用与您看到的相同的选项。

为此,我在会话中保存索引的参数。

class ApplicationController < ActionController::Base

  helper_method :index_with_params
  after_filter :save_index_params, :only => [:index]

  def save_index_params 
    session[self.class.to_s] = params 
  end

  def index_with_params overrider={}
    object = self.kind_of?(ApplicationController) ? self : controller
    h = session[object.class.to_s] || {"action" => :index}
    h["only_path"] = true
    url_for(h.merge(overrider));
  end

end

我曾经使用 ActiveRecord 进行会话存储。现在我想使用cookie。所以会话应该很轻。

你如何处理这样的情况?

谢谢。

山姆

4

1 回答 1

1

在显示新的编辑页面后,您可能希望返回索引页面,并使用与您看到的相同的选项。

如果您最初在查询字符串中传递过滤选项,即。example.com/widgets?order_by=price,然后当您的用户使用浏览器“返回”按钮导航回索引时,将保留过滤选项。

如果您确实希望在用户稍后键入时保留选项example.com/widgets,那么您需要将选项保留在某处,通常在session对象中。cookie 存储最多可容纳 4KB,因此应该没问题,除非您有很多选择。如果您需要更多空间或性能成为问题,请查看其他会话存储,例如 Redis 存储。

于 2012-09-20T18:01:00.753 回答