活动管理多选过滤器

问题描述 投票:0回答:3

我希望在我的管理页面上为用户创建一个过滤器,以显示同时拥有Subject_A和Subject_B的用户。

使用以下代码行,我已经能够过滤具有Subject_A或Subject_B或两者的用户。

filter :universities, as: :select, multiple: true

有没有办法使用 Active Admin 创建一个过滤器来过滤仅具有主题_A 主题_B 的用户?

ruby-on-rails postgresql activeadmin
3个回答
11
投票

multiple: true
从来没有为我工作过。然而,以下内容却做到了:

filter :section, label: 'Category', 
  as: :select, input_html: { multiple: true }, 
  collection: User.categories

1
投票

你可以试试这个:

filter :universities_and_universities, as: :select, multiple: true

这不是完美的解决方案,但应该可以正常工作


0
投票

使用 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();
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.