如何在Active Admin过滤器部分中使用HABTM字段?

时间:2011-10-14 20:27:31

标签: ruby-on-rails-3 has-and-belongs-to-many activeadmin

我正在使用Active Admin 0.3.2,我的数据库架构包含一些has_and_belongs_to_many关系。我可以很好地创建和显示记录,但是试图将它们包含在过滤器部分会导致事情停滞不前。

模型\ pin.rb:

class Pin < ActiveRecord::Base
    has_and_belongs_to_many :pin_types, :join_table => :pin_types_pins
end

模型\ pin_type.rb

class PinType < ActiveRecord::Base
    has_and_belongs_to_many :pins, :join_table => :pin_types_pins
end

管理员\ pins.rb

ActiveAdmin.register Pin do
    filter :pin_types
    ...other filters
end

结果是出现了其他过滤器,但针对类型没有任何部分。

如果是admin \ pins.rb而是:

ActiveAdmin.register Pin do
    filter :pin_types, :as => :check_boxes
    ...other filters
end

我得到以下内容:

undefined method `pin_type_ids_in' for #<MetaSearch::Searches::Pin:0xcd2c108>

我想要做的是允许用户从一组可能的选项中选择一个或多个引脚类型,并根据是否适用任何选项进行过滤。

这可能吗?

2 个答案:

答案 0 :(得分:3)

像这样使用过滤器: filter:model_attribute ,所以如果你在User_events上并且想要搜索用户名,你就会这样做 filter:user_fullName

答案 1 :(得分:0)

请注意,ccarlson的答案有效,但仅适用于:check_boxes

这很不幸,因为meta_search的默认行为(用于驱动过滤器搜索)不会过滤掉重复项...当你使用复选框时,你可能不希望看到结果出现两次因为它匹配2个选定的选项。

我在尝试使用as: :select时遇到了未定义的方法错误,但不得不在复选框上咬紧牙关。