一個管理插件,用於將自訂過濾器新增到索引頁。該濾鏡將呈現為畫布外元件,因此它不會在索引頁上佔用太多空間。深受 ActiveAdmin 濾鏡的啟發。
我們一致認為,管理團隊在預設搜尋或過濾功能方面做得非常出色。它已經支援多個搜尋字段和關係表搜尋。它很容易自訂(例如啟用/停用搜尋、定義自訂搜尋欄位等)。
但我發現有一些缺點:
registration_status
和employment_status
,並且您只想搜尋「active」註冊狀態,您將獲得所有「active」記錄,包括就業狀態。如果您還有其他原因,請分享您的想法。
將administrate_filterable
加入到您的 Gemfile 中:
gem 'administrate_filterable'
然後執行:
$ bundle install
或者,只需運行:
$ bundle add administrate_filterable
對於要新增自訂篩選器的每個資源,請將以下行分別新增至其管理控制器。
include AdministrateFilterable :: Filterer
例子:
class UsersController < Administrate :: ApplicationController
include AdministrateFilterable :: Filterer
# ...
end
預設情況下, COLLECTION_ATTRIBUTES
中的所有屬性都會呈現為篩選器欄位。您可以透過將FILTER_ATTRIBUTES
新增至管理儀表板檔案來覆寫此設定。
範例( app/dashboards/user_dashboard.rb
):
class UserDashboard < Administrate :: BaseDashboard
# ..
FILTER_ATTRIBUTES = [
:first_name ,
:last_name ,
:email ,
:created_at
] . freeze
# ..
end
可以自訂過濾器模板(例如更改過濾器按鈕圖示等)。您可以透過覆寫應用程式中的預設範本來完成此操作,只需在所需的資源資料夾中建立名為_index_filter.html.erb
的新檔案。
例如,如果要覆寫users
資源的過濾器模板,則需要在app/views/admin/users/_index_filter.html.erb
中建立檔案。然後只需將預設模板中的內容複製並貼上到此處並進行修改以滿足您的需求。
如果您使用資產管道,則需要在app/assets/config/manifest.js
檔案中包含此 gem 的資產:
// ... other code here ...
//= link administrate_filterable/application.css
//= link administrate_filterable/application.js
如果未載入資源,請執行rails assets:precompile
。
預設情況下,這個 gem 會在views/admin/application/_search.html.erb
部分新增一個篩選按鈕。但是,如果您在應用程式中覆蓋了該部分,則可以透過新增以下行來手動新增按鈕:
<%= render 'index_filter' %>
範例( app/views/admin/users/_search.html.erb
):
< form class =" search " role =" search " >
... other code here ...
</ form >
<%= render 'index_filter' %>
scoped_resource
方法該 gem 利用scoped_resource
方法透過覆寫其預設行為來過濾資源。如果您有機會也在應用程式控制器中重寫此方法,那麼您還將重寫過濾器功能,並且它將不起作用。
要解決此問題,您需要在重寫的scoped_resource
方法的最後一行中新增以下程式碼:
filtered_resources ( your_scoped_resource )
例如:
def scoped_resource
# Your custom filter logic here
resources = super . where ( status : 'active' )
# Add this line to make the filter work
filtered_resources ( resources )
end
由於我使用_search.html.erb
部分來新增篩選器按鈕,因此如果您在模型儀表板中將所有可搜尋屬性設為 false,它可能不會顯示。因此,請確保您至少有一個可搜尋屬性來顯示篩選器按鈕。
我使用部分的原因是因為:
_index_header.html.erb
部分,但它與 administrate_exportable 中的匯出按鈕衝突。由於部分覆蓋,使用這兩個寶石會導致缺少一個按鈕。 要讓這顆寶石變得更好,還有很多事情要做。以下是其中的一些(按優先順序最高的順序排列):
belongs_to
關聯進行過濾等) prompt
選項、新增include_blank
選項等) scoped_resource
方法) scoped_resource
方法中使用實例變數) 如果您有任何想法或建議,請透過建立問題或拉取請求讓我知道。
您可以透過為這個專案做出貢獻來幫助我改進這個 gem。非常感謝任何幫助。
bundle exec rspec
麻省理工學院許可證
非常感謝以下資源在創建這個寶石時為我提供了很多幫助: