ruby-on-rails Rails 7 +主动管理员:使用逗号分隔值进行过滤

insrf1ej  于 2023-03-09  发布在  Ruby
关注(0)|答案(1)|浏览(158)

轨道7.0.4活动管理2.12.13
我有一个模型Product的管理页面。一个产品包含一个字段product_number
我在admin/products.rb中有以下代码:

filter :product_number_equals, as: :string, label: 'Product Number'

目前,过滤器只适用于单个产品编号,但我希望允许用户输入逗号分隔的值,并显示包含任何给定产品编号的所有产品。我天真地认为,这将是在公园散步。我错得太离谱了!我花了太多的时间试图让它正常工作。我试过重写#scoped_collection#apply_filtering,但没有用。在模型课上调整洗劫也没有帮助。我肯定我做错了什么。这让我发疯!

kx5bkwkv

kx5bkwkv1#

终于找到了解决办法。谢谢Slack Overflow是一只很棒的橡胶鸭。

# models/product.rb

class Product < ApplicationRecord
  scope :product_number_one_of, lambda { |product_numbers|
    product_numbers = product_numbers.split(',').map(&:strip) if product_numbers.is_a?(String)
    where(product_number: product_numbers)
  }

  def self.ransackable_scopes(*)
    [:product_number_one_of]
  end
end
# admin/products.rb

ActiveAdmin.register Product do
  # ...
  filter :product_number_one_of, as: :string, label: 'Product Number'
  # ...
end

相关问题