مكون إضافي للإدارة لإضافة مرشح مخصص إلى صفحة الفهرس الخاصة بك. سيتم عرض الفلتر كمكون خارج اللوحة، لذلك لن يشغل مساحة كبيرة على صفحة الفهرس الخاصة بك. مستوحى للغاية من مرشح ActiveAdmin.
دعونا نتفق على أن فريق الإدارة قام بعمل رائع من خلال وظيفة البحث أو التصفية الافتراضية. وهو يدعم بالفعل حقول بحث متعددة وعمليات بحث في الجداول العلائقية. من السهل التخصيص (مثل تمكين/تعطيل البحث، وتحديد حقول البحث المخصصة، وما إلى ذلك).
لكن هناك بعض السلبيات التي وجدتها:
registration_status
و employment_status
، وتريد البحث عن حالة التسجيل "نشط" فقط، فستحصل على جميع السجلات "النشطة"، بما في ذلك حالة التوظيف.يرجى مشاركة أفكارك إذا كان لديك أي أسباب أخرى.
أضف 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
الخاص بك:
// ... other code here ...
//= link administrate_filterable/application.css
//= link administrate_filterable/application.js
قم بتشغيل rails assets:precompile
إذا لم يتم تحميل الأصول.
بشكل افتراضي، ستضيف هذه الجوهرة زر تصفية إلى 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
تستخدم هذه الجوهرة طريقة 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
التي تم تجاوزها) إذا كان لديك أي أفكار أو اقتراحات، واسمحوا لي أن أعرف عن طريق إنشاء مشكلة أو طلب سحب.
يمكنك مساعدتي في تحسين هذه الجوهرة من خلال المساهمة في هذا المشروع. هو موضع تقدير كبير أي مساعدة.
bundle exec rspec
رخصة معهد ماساتشوستس للتكنولوجيا
شكرًا جزيلاً على الموارد التالية التي ساعدتني كثيرًا في إنشاء هذه الجوهرة: