12

親の属性に基づいてオブジェクトをフィルタリングできるようにしたいと思います。

class Call < ActiveRecord::Base
  belongs_to :user
end

class User < ActiveRecord::Base
  has_many :calls
end

私はこれを行うことができるようにしたいと思います:

ActiveAdmin.register Call do
  filter :user
end

すべてのユーザーの選択を提示するのではなく、user.name でフィルタリングします。これはできますか?

4

5 に答える 5

34

Denisのソリューションはほとんどうまくいきました。フィルタータイプを追加する必要がありました。例えば:

ActiveAdmin.register Call do
  filter :user_name, :as => :string
end
于 2012-01-11T22:59:21.440 に答える
10

これを試して:

ActiveAdmin.register Call do
  filter :user_name
end

ActiveAdminはmeta_searchフィルターに使用するため、ドキュメントは非常に役立ちます:https ://github.com/ernie/meta_search

于 2011-11-11T09:41:26.787 に答える
4

ActiveAdmin の次のリリース (私は 1.0.0.pre を使用しています) では、Ransackメソッドを使用できます。たとえば、ユーザーに属する記事があるとします。

次の admin/article.rb ファイルが作成されます

ActiveAdmin.register Article do

  controller do
    def scoped_collection
      Article.includes(:user)
    end
  end  

  index do      
   column :id
   column :created_at
   column :title
   column("Author", sortable: 'users.first_name') { |item| link_to item.user.full_name, user_path(item.user) }
   actions
  end

  filter :user_first_name_cont, :as => :string
  filter :user_last_name_cont, :as => :string  

end

ここで、user_first_name_cont は関連するユーザー first_name でフィルタリングする ransack メソッドであり、「cont」は含むことを意味します。

于 2014-05-25T07:54:25.477 に答える
3

ActiveAdmin によって使用される InheritedResource からネストされたリソースを使用できるため、リストは親によって自動的にフィルター処理されます。

ActiveAdmin.register User do
  # this is the parent resource
end

ActiveAdmin.register Call do
  belongs_to :user # nested below resource user
end

その後、rake ルートを使用して、ActiveAdmin によって生成された新しいネストされたルートを確認できます:)

于 2011-12-01T20:41:59.473 に答える