3

ActiveAdminとRubyonRailsを使用して、Webアプリの管理セクションを開発しています。多くの属性を持つモデルのインデックスページを作成しています。フィルタを有効にしたこれらの属性のほとんどは、乱雑になりすぎるため、インデックステーブルにすべて表示することはできません。使用されているフィルターに基づいてテーブルの列を動的に表示/非表示にする方法はありますか?この問題へのより良いアプローチはありますか?

4

1 に答える 1

3

私はこの問題に対する少しの答えを見つけましたが、それはきれいではなく、間違いなくあまり乾燥していません。

ifActiveAdminDSLメソッド内で実際にステートメントを使用できますindex。また、ActiveAdminはフィルターをq[]GETパラメーターとして渡します。たとえば、「username」という名前の文字列フィールドはq[username_contains]GETパラメータになります。「number_of_posts」という名前の数値フィールドはq[number_of_posts_eq]。これを使用して、フィルタリングされている場合は投稿の数を表示し、フィルタリングされていない場合はユーザーのメールアドレスを表示する例を見ることができます。

ActiveAdmin.register User do
    index do
        column :username
        column :first_name
        column :last_name
        if(params[:'q[number_of_posts_eq]'])
            column :number_of_posts
        else
            column :email
        end
    end

    filter :number_of_posts
end

もちろん、さまざまなフィルタータイプがあるため、クエリパラメーターはすべてタイプによって異なります。数値タイプでさえ、等しい、より小さい、より大きいのそれぞれに、、、および接尾辞があり_eqます_lt_gt

于 2012-11-14T17:33:21.713 に答える