【发布时间】:2014-08-14 05:41:19
【问题描述】:
我想在应用程序面板的 activeadmin 面板中自定义我的过滤器。 目前我有一个这样的过滤器。
并且想要这样的过滤器
我的代码如下
为了在过滤器中添加类别元素,我按照以下代码进行操作。
有3个表叫
- 应用程序
- 类别
- application_categories
并且我希望根据过滤器中的类别选择从 application_categories 中过滤数据。
表结构如下。
-
申请表:
- 身份证
- 姓名
- 状态
- developer_id
- 版本
- language_id 等...
-
分类表
- 身份证
- 姓名
- parent_id
-
application_categories 表
- 身份证
- application_id
- category_id
在activeadmin资源文件中
app/admin/applications.rb 文件代码
filter :status, :as => :select, :collection => ["pending", "approved", "declined"]
过滤器 :featured, :as => :select
过滤器 :developer, :collection => proc {(Developer.all).map{|d| [d.company_name, d.id]}}
过滤器 :category , :collection => proc {(Category.all).map{|c| [c.name,c.id]}}
过滤器:名称
过滤器:版本
过滤:标签
在应用程序模型文件中
在模型 app/models/application.rb
belongs_to :开发者
属于_to :bundle
属于_to :license
属于_to :语言
属于_to :category
has_many :application_categories, :dependent => :destroy
has_many :categories, :through => :application_categories
它是在过滤器面板中显示类别元素,但是当我们选择任何类别并单击过滤器时会产生错误,如下所示:
Mysql2::Error: Unknown column 'applications.category_id' in 'on clause': SELECT COUNT(DISTINCT count_column) FROM (SELECT applications.id AS count_column FROM applications LEFT OUTER JOIN categories ON categories.id = applications.category_id WHERE categories.id = 32 LIMIT 30 OFFSET 0) subquery_for_count
【问题讨论】: