-
Notifications
You must be signed in to change notification settings - Fork 2
How I use it?
Clément Prod'homme edited this page May 4, 2018
·
6 revisions
Pasos para usarla
- Referenciar a la gema en el Gemfile de la app host:
gem 'ajax_forms', github: 'bys-control/activeadmin-ajax_forms'- Agregar al active_admin.js.cofee de la app host:
#= require ajax_forms/application- En los resource que se quieran usar agregar:
ajax_forms :quick_new_partial => 'item',
:find_conditions=>{
:m=>"or",
:per=>30,
:find_fields=>[:name_contains, :partner_name_contains]
}donde "item" es el nombre del resource
- Si se le pasa un id, busca por id y retorna ese registro.
- Si no se le pasan condiciones, devuelve aquellos que coincidan con el campo name del resource en cuestión
- En caso de querer hacer la búsqueda con otras condiciones pasar un hash:
:find_conditions=>{:m=>"or", :per=>30, :find_fields=>[:name_contains, :partner_name_contains]}
El hash con clave :find_conditions debe respetar las convenciones de búsqueda de https://github.com/activerecord-hackery/ransack
- Crear el partial con el form de la sig. manera:
<%= semantic_form_for [:admin, @item], remote: (defined? @remote) ? true : false, url: @form_url, :builder => FormtasticBootstrap::FormBuilder do |f| %>
<div id="quick-add-errors"></div> <!-- Agregar para mostrar errores -->
# Poner la clase select2-autocomplete para que funcione el selector con select2
# Poner la clase ajax si se quiere hacer la búsqueda de los resultados en el selector mediante ajax
# En el atributo data se deben pasar las opciones:
# - multiple (boolean): true (default) - indica si el selector es simple o multiple (aún no implementado)
# - source: path a la función find donde se devuelve key y value a mostrar en el selector. @todo: modificar para que si no se pasa nada se tome la función por defecto de la gema. En caso contrario se puede sobreescribir por una propia
# - modal: path del controller que renderiza el partial en el modal fancybox
<%=
f.input :item_id,
:label => false,
:as => :string,
:input_html => {
:class => "select2-autocomplete ajax input-sm",
:data => {
:multiple => false,
:source => find_admin_items_path,
:modal => quick_new_admin_items_path
}
}
%>
# custom find method:
# add dependent condition:
# - selectorId: value of this selector id is passed to parameters
# - ransackFilter: filter strinc compatible with ransack gem. It will be applied with selectorId value when filter over select2 box
<%=
f.input :project_id,
:as => :string,
:input_html => {
:class => "select2-autocomplete ajax",
:data => {
:multiple => false,
:source => find_projects_admin_invoices_path,
:modal => quick_new_admin_projects_path,
:dependent=>{
:selectorId=>"invoice_partner_id",
:ransackFilter=>:partner_id_eq
}
}
},
:wrapper_html => {
:class => "col-md-4"
}
%>
<%= end %>