如何在activeadmin中自定义筛选器

时间:2014-08-14 05:41:19

标签: ruby-on-rails activeadmin

我想在应用程序面板的activeadmin面板中自定义我的过滤器。 目前我有这样的过滤器。 Current i have filter like this

并希望像这样的过滤器

enter image description here

我的代码如下:

要在过滤器中添加类别元素,请执行以下代码。

有3个名为

的表
  1. 应用
  2. 类别
  3. application_categories
  4. 我希望来自application_categories的过滤数据按照过滤器类别的选择。

    表格结构如下。

    1. 申请表:

      1. ID
      2. 名称
      3. 状态
      4. developer_id
      5. 版本
      6. language_id等......
    2. 类别表

      1. ID
      2. 名称
      3. parent_id
    3. application_categories表

      1. id
      2. APPLICATION_ID
      3. category_id
    4. 在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 applicationsid AS count_column FROM applications LEFT OUTER JOIN categories ON {{ 1}}。categories = idapplications WHERE category_idcategories = 32 LIMIT 30 OFFSET 0)subquery_for_count

1 个答案:

答案 0 :(得分:0)

app/admin/applications.rb

filter :categories

app/models/application.rb中:删除belongs_to :category

如果它不起作用,您必须更新ActiveAdmin gem:bundle update