Un complemento de administración para agregar un filtro personalizado a su página de índice. El filtro se representará como un componente fuera del lienzo, por lo que no ocupará demasiado espacio en su página de índice. Altamente inspirado en el filtro de ActiveAdmin.
Aceptemos que el equipo de Administración ha hecho un gran trabajo con la función de búsqueda o filtro predeterminada. Ya admite múltiples campos de búsqueda y búsquedas en tablas relacionales. Es fácil de personalizar (como habilitar/deshabilitar la búsqueda, definir campos de búsqueda personalizados, etc.).
Pero hay algunos inconvenientes que encontré:
registration_status y employment_status y desea buscar solo el estado de registro "activo", obtendrá todos los registros "activos", incluido el estado laboral.Comparta sus pensamientos si tiene otras razones.
Agregue administrate_filterable a su Gemfile:
gem 'administrate_filterable'Y luego ejecuta:
$ bundle install
O simplemente ejecute:
$ bundle add administrate_filterable
Para cada recurso al que desee agregar un filtro personalizado, agregue la siguiente línea a su controlador de administración, respectivamente.
include AdministrateFilterable :: FiltererEjemplo:
class UsersController < Administrate :: ApplicationController
include AdministrateFilterable :: Filterer
# ...
end De forma predeterminada, todos los atributos de COLLECTION_ATTRIBUTES se representarán como campos de filtro. Puede anular esto agregando FILTER_ATTRIBUTES al archivo del panel de administración.
Ejemplo ( app/dashboards/user_dashboard.rb ):
class UserDashboard < Administrate :: BaseDashboard
# ..
FILTER_ATTRIBUTES = [
:first_name ,
:last_name ,
:email ,
:created_at
] . freeze
# ..
end Es posible personalizar la plantilla de filtro (por ejemplo, cambiar el icono del botón de filtro, etc.). Puede hacer esto anulando la plantilla predeterminada en su aplicación, simplemente cree un nuevo archivo llamado _index_filter.html.erb en la carpeta de recursos que desee.
Por ejemplo, si desea anular la plantilla de filtro para el recurso users , debe crear el archivo en app/views/admin/users/_index_filter.html.erb . Luego simplemente copie y pegue el contenido de la plantilla predeterminada aquí y modifíquelo para adaptarlo a sus necesidades.
Si utiliza una canalización de activos, debe incluir los activos de esta gema en su archivo app/assets/config/manifest.js :
// ... other code here ...
//= link administrate_filterable/application.css
//= link administrate_filterable/application.js Ejecute rails assets:precompile si los activos no están cargados.
De forma predeterminada, esta gema agregará un botón de filtro a views/admin/application/_search.html.erb parcial. Pero si ha anulado ese parcial en su aplicación, puede agregar el botón manualmente agregando la siguiente línea:
<%= render 'index_filter' %> Ejemplo ( app/views/admin/users/_search.html.erb ):
< form class =" search " role =" search " >
... other code here ...
</ form >
<%= render 'index_filter' %>scoped_resource anulado Esta gema utiliza el método scoped_resource para filtrar los recursos anulando su comportamiento predeterminado. Si por casualidad también anula este método en el controlador de su aplicación, también anulará la funcionalidad del filtro y no funcionará.
Para solucionar este problema, debe agregar el siguiente código en la última línea de su método scoped_resource anulado:
filtered_resources ( your_scoped_resource )Por ejemplo:
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 Dado que uso el parcial _search.html.erb para agregar el botón de filtro, es posible que no se muestre si cambia todos los atributos de búsqueda a falso en el panel del modelo. Así que asegúrese de tener al menos un atributo de búsqueda para que aparezca el botón de filtro.
La razón por la que uso el parcial es porque:
_index_header.html.erb , pero entra en conflicto con el botón de exportación de administrate_exportable. Al usar ambas gemas, falta un botón debido a la anulación parcial. Todavía quedan muchas cosas por hacer para mejorar esta joya. Éstos son algunos de ellos (ordenados primero por mayor prioridad):
belongs_to , etc.) prompt , agregue la opción include_blank , etc.) scoped_resource ) scoped_resource anulado) Si tiene alguna idea o sugerencia, hágamelo saber creando un problema o una solicitud de extracción.
Puedes ayudarme a mejorar esta joya contribuyendo a este proyecto. Cualquier ayuda es muy apreciada.
bundle exec rspecLicencia MIT
Muchas gracias por los siguientes recursos que me ayudaron mucho a crear esta joya: