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を使用していました。今、私はクッキーを使いたいです。したがって、セッションは軽くする必要があります。

そのような場合をどのように処理しますか?

ありがとう。

サム

4

1 に答える 1

1

表示、新規、編集ページに移動した後、見たのと同じオプションでインデックス ページに戻りたい場合があります。

最初にクエリ文字列でフィルタリングオプションを渡すと、つまり. example.com/widgets?order_by=priceの場合、ユーザーがブラウザの [戻る] ボタンを使用してインデックスに戻ると、フィルタリング オプションが保持されます。

ユーザーが後で入力したときにオプションを保持したい場合は、通常はオブジェクトのどこかexample.com/widgetsにオプションを保持する必要があります。Cookie ストアは最大 4KB まで対応できるので、選択肢が多くない限り問題ありません。より多くのスペースが必要な場合、またはパフォーマンスが問題になる場合は、Redis Store などの他のセッション ストアを調べてください。session

于 2012-09-20T18:01:00.753 に答える