Ответ 1
Решение Дениса почти сработало для меня. Мне просто нужно было добавить тип фильтра. Например:
ActiveAdmin.register Call do
filter :user_name, :as => :string
end
Я хотел бы иметь возможность фильтровать объект на основе его атрибута parent:
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, а не выберите всех пользователей. Это можно сделать?
Решение Дениса почти сработало для меня. Мне просто нужно было добавить тип фильтра. Например:
ActiveAdmin.register Call do
filter :user_name, :as => :string
end
Попробуйте следующее:
ActiveAdmin.register Call do
filter :user_name
end
Поскольку ActiveAdmin использует meta_search
для фильтров, их документ очень полезен: https://github.com/ernie/meta_search
Вы можете использовать вложенные ресурсы из InheritedResource, который используется ActiveAdmin, поэтому ваш список автоматически фильтруется родителем.
ActiveAdmin.register User do
# this is the parent resource
end
ActiveAdmin.register Call do
belongs_to :user # nested below resource user
end
Затем вы можете использовать маршруты рейка, чтобы увидеть новые вложенные маршруты, созданные ActiveAdmin:) Надеемся, что это поможет
В следующей версии 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 - метод ransack, который фильтрует ассоциированное имя пользователя first_name и "cont".