【问题标题】:How to Customize the Filter in activeadmin如何在 activeadmin 中自定义过滤器
【发布时间】:2014-08-14 05:41:19
【问题描述】:

我想在应用程序面板的 activeadmin 面板中自定义我的过滤器。 目前我有一个这样的过滤器。

并且想要这样的过滤器

我的代码如下

为了在过滤器中添加类别元素,我按照以下代码进行操作。

有3个表叫

  1. 应用程序
  2. 类别
  3. application_categories

并且我希望根据过滤器中的类别选择从 application_categories 中过滤数据。

表结构如下。

  1. 申请表:

    1. 身份证
    2. 姓名
    3. 状态
    4. developer_id
    5. 版本
    6. language_id 等...
  2. 分类表

    1. 身份证
    2. 姓名
    3. parent_id
  3. application_categories 表

    1. 身份证
    2. application_id
    3. 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

【问题讨论】:

    标签: ruby-on-rails activeadmin


    【解决方案1】:

    app/admin/applications.rb:

    filter :categories
    

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

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

    【讨论】:

    • 我根据您的建议重新编写代码并更新捆绑包,但它仍然无法正常工作。甚至更多类别的下拉列表也不会显示在管理面板中。
    • 不,我没有收到任何错误消息。它按原样执行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-05
    相关资源
    最近更新 更多