簡體   English   中英

如何在activeadmin中自定義過濾器

[英]How to Customize the Filter in activeadmin

我想在activeadmin面板中為應用程序面板自定義過濾器。 目前,我有一個這樣的過濾器。 目前我有這樣的過濾器

並想要這樣的過濾器

在此處輸入圖片說明

我這樣做的代碼如下

對於添加類別元素在過濾器我做如下代碼。

有3張桌子叫

  1. 應用領域
  2. 分類
  3. application_categories

而且我希望根據對過濾器類別的選擇,從application_categories中獲取過濾器數據。

表的結構如下。

  1. 申請表:

    1. ID
    2. 名稱
    3. 狀態
    4. developer_id
    5. language_id等
  2. 類別表

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

    1. ID
    2. application_id
    3. category_id

在activeadmin資源文件中
app / admin / applications.rb文件代碼

過濾器:status,:as =>:select,:collection => [“待處理”,“已批准”,“已拒絕”]
過濾器: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]}}
過濾器:名稱
過濾器:version
過濾器:標簽

在應用程序模型文件中
在模型app / models / application.rb中

當屬:開發者
歸屬於:bundle
所屬:許可證
歸屬於:language
相關類:類別

has_many:application_categories,:depend =>:destroy
has_many:categories,:through =>:application_categories

它在過濾器面板中顯示類別元素,但是當我們選擇任何類別並單擊過濾器時,會產生錯誤,如下所示:

Mysql2 ::錯誤:未知柱在'applications.category_id' 'on子句':SELECT COUNT(DISTINCT count_column)FROM(SELECT applicationsid AS count_column FROM applications LEFT OUTER JOIN categories ON categoriesid = applicationscategory_id WHERE categoriesid = 32 LIMIT 30 OFFSET 0)subquery_for_count

app/admin/applications.rb

filter :categories

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM