module ActiveAdminAjaxForms::DSL
Attributes
ajax_form_enabled[RW]
Public Instance Methods
ajax_forms(options={})
click to toggle source
todo: falta completar el pasaje de opciones de configuracion para especificar los partials a renderizar
# File lib/ajax_forms/dsl.rb, line 6 def ajax_forms options={} default_options = { quick_new_partial: nil, quick_create_partial: nil, model: config.resource_class, } options = default_options.deep_merge(options) @ajax_form_enabled = true #todo: Posibilidad de especificar los atributos a devolver en el método find. Si no se especifica nada devolver todas las columnas collection_action :find, :method => :get do @model = resource_class search_term=params[:q] groupping_condition=params[:q][:g] rescue nil if !params[:q_id].blank? params[:q]={:id_equals => params[:q_id]} #selected element elsif groupping_condition.nil? params[:q]={ :g=>{ "0"=>{:name_cont_all=>search_term.split(" ")} } } params[:q][:g]["1"]={params[:dependentSelect][:ransackFilter].to_sym=>params[:dependentSelect][:selectorValue]} if params[:dependentSelect] and !params[:dependentSelect][:selectorValue].empty? end @q = @model.search(params[:q]) @items = @q.result.order('id desc', 'name asc').limit(100).map { |item| {:id => item.id, :text => item.to_s} } respond_to do |format| format.json { render :json => @items } end end collection_action :quick_new, :method => :get do @model = resource_class.new(:name => Base64.decode64(params[:name])) options[:selector]=params[:selectorid] #crea una variable de instancia con el nombre del recurso para compatibilidad con partials normales instance_variable_set("@#{resource_instance_name.to_s}", @model) @remote = true @form_url = eval "quick_create_admin_#{resource_collection_name.to_s}_path" @id="#{Time.now.to_i.to_s}_#{resource_instance_name.to_s}" options[:id]=@id #todo: tiene que renderizar un formulario por defecto if options.fetch(:quick_new_partial).nil? render :nothing => true else render partial: options.fetch(:quick_new_partial), layout: 'application' end end collection_action :quick_create, :method => :post do @model = resource_class.new(params[resource_instance_name]) @selector=options[:selector] @model.save @id=options[:id] render file: 'quick_response', layout: false end end