8

私の ActiveAdmin モデルには、削除されたレコードを表示するカスタム スコープと、特定の列でレコードを検索するためのいくつかのフィルターがあります。

フィルターを個別に使用するか、組み合わせて使用​​すると、期待どおりに機能します。

スコープの使用は期待どおりに機能します。

問題は、スコープを使用するとすべてのフィルターが上書きされ、スコープを選択した後に追加されたフィルターが何も実行されないことです。

ここで何かアイデアはありますか?私が望むのは、特定のスコープを表示し、そのスコープ内で結果をフィルタリングできるようにすることです。

    ActiveAdmin.register Example do
      scope :deleted do |example|
        Example.only_deleted
      end

      scope :all do |example|
        Example.with_deleted
      end

      filter :title
      filter :description

      index do
        column :title
        column :description
      end

    end

[アップデート]

これが私が行った解決策です。モデルに with_deleted スコープを設定し、削除された結果を表示/非表示にするためのフィルターを側に含めます。最初に削除された結果も表示されるため理想的ではありませんが、少なくともすべてのフィルターを一緒に使用できます。

    ActiveAdmin.register Example.with_deleted do

      filter :title
      filter :description
      filter :deleted, :as => :select, :collection => {:true => nil, :false => false }

      index do
        column :title
        column :description
      end

    end
4

2 に答える 2

-3

スコープではなく、例が削除されたかすべてが削除されたかに基づいて基準に基づいてレコードを選択する別のフィルターを作成します。そして、必要な数のフィルターを適用します。

または、フィルターを実行するセレクターの計算中にフィルターでスコープを実行し、フィルター条件をそのセレクターに設定します。

于 2012-05-09T20:30:35.987 に答える