我想在应用程序面板的activeadmin面板中自定义我的过滤器。 目前我有这样的过滤器。
并希望像这样的过滤器
我的代码如下:
要在过滤器中添加类别元素,请执行以下代码。
有3个名为
的表我希望来自application_categories的过滤数据按照过滤器类别的选择。
表格结构如下。
申请表:
类别表
application_categories表
在activeadmin资源文件中 app / admin / applications.rb文件代码
filter:status,:as => :select,:collection => ["待定","已批准","已拒绝"]
filter:featured,:as => :选择
filter:developer,:collection => proc {(Developer.all).map {| d | [d.company_name,d.id]}}
filter:category,:collection => proc {(Category.all).map {| c | [c.name,c.id]}}
过滤器:名称
过滤器:版本
过滤器:标签
在应用程序模型文件中 在模型app / models / application.rb
中 belongs_to:开发人员
belongs_to:bundle
belongs_to:license
belongs_to:语言
belongs_to:category
has_many:application_categories,:dependent => :破坏
has_many:categories,:through => :application_categories
它是过滤器面板中的显示类别元素,但是当我们选择任何类别并单击过滤器时,它会生成错误,如下所示:
Mysql2 ::错误:未知列' applications.category_id' in' on子句':SELECT COUNT(DISTINCT count_column)FROM(SELECT applications
。id
AS count_column FROM applications
LEFT OUTER JOIN categories
ON {{ 1}}。categories
= id
。applications
WHERE category_id
。categories
= 32 LIMIT 30 OFFSET 0)subquery_for_count
答案 0 :(得分:0)
在app/admin/applications.rb
:
filter :categories
在app/models/application.rb
中:删除belongs_to :category
如果它不起作用,您必须更新ActiveAdmin gem:bundle update