我希望在我的管理页面上为用户创建一个过滤器,以显示同时拥有Subject_A和Subject_B的用户。
使用以下代码行,我已经能够过滤具有Subject_A或Subject_B或两者的用户。
filter :universities, as: :select, multiple: true
有没有办法使用 Active Admin 创建一个过滤器来过滤仅具有主题_A 和主题_B 的用户?
multiple: true
从来没有为我工作过。然而,以下内容却做到了:
filter :section, label: 'Category',
as: :select, input_html: { multiple: true },
collection: User.categories
你可以试试这个:
filter :universities_and_universities, as: :select, multiple: true
这不是完美的解决方案,但应该可以正常工作
使用 Stimulus 和 tom-select 的 ActiveAdmin v4 和 Rails 8 解决方案。
我像这样添加了tom-select:https://stackoverflow.com/a/78985377/2771889
app/admin/entity.rb
ActiveAdmin.register Entity do
filter :association, input_html: { multiple: true, data: { controller: 'multiselect' } }
end
app/javascript/controllers/multiselect_controller.js
import { Controller } from "@hotwired/stimulus";
import TomSelect from "tom-select";
export default class extends Controller {
static values = { placeholder: String };
connect() {
this.initializeTomSelect();
}
disconnect() {
this.destroyTomSelect();
}
initializeTomSelect() {
if (!this.element) return;
this.select = new TomSelect(this.element, {
plugins: ["remove_button"],
create: false,
maxItems: null,
closeAfterSelect: true,
placeholder: this.placeholderValue,
hidePlaceholder: true,
});
}
destroyTomSelect() {
if (this.select) {
this.select.destroy();
}
}
}