plugin Rails : resultset-autofilter

Publié par fredix Mar 30 jan 2007 21:02:00 GMT

J’ai publié il y a quelques jours un plugin Rails permettant la génération automatique du condition d’un paginate à partir d’un formulaire : resultset-autofilter

Ce plugin sert aux développeurs devant créer un grand nombre de formulaires permettant de filtrer un tableau de données. Il est encore mal documenté, mais les retours et contributions sont les bienvenues. Il permet également de stocker dans l’objet en session le résultat des requêtes SQL servant à remplir un champs html select.
Ainsi lorsque l’utilisateur revient sur une page, le contenu du formulaire de recherche est restauré.

Exemple :

def index
  filter(:connection_index) {|data|  
         @nbrfields = Filters_and_conditions.instance_fields(self, data) }
  if @nbrfields == 0
    h = {:view_products => Product.find_all.collect {|p| [ p.name, p.id ] } }
    Filters_and_conditions.set_fields(self, :connection_index, h)
  end
end

ici instance_fields instancie les objets en session, et s’ils n’ont pas été encore déclaré, ils le sont puis stockés dans l’objet en session.

def search
   filter(:connection_index) {|data| 
                            Filters_and_conditions.generate(self, params, data) }
   render :partial => "list", :layout => false
 end

La recherche ne consiste qu’en une seule ligne de code.

<%= resultset_filter(:page =>   :index,
                             :type =>    :select,
                             :model => :product,
                             :field =>   :id,
                             :filter =>   @view_products,
                             :js => {:onchange => "this.form.onsubmit()"})

Et on utilise un helper dans la vue. En plus du type ’:select’, il existe aussi le type ’:selectandinput’, qui génère un select proposant des critères de filtre tel que ‘commence par’ et ‘contient’ et un champ input attaché :

<%= resultset_filter(:page =>   :index,
                             :type =>    :selectandinput,
                             :model => :connection,
                             :field =>   :col2,
                             :filter =>   ResultsetAutofilter::ViewStringFilter,
                             :js => {:onchange => "this.form.onsubmit()"})

Ici ce helper permet de rechercher ce que l’utilisateur saisie dans le champs input, dans le champs col2 du modèle connection. :filter propose à l’utilisateur des critères de filtre (commence par, finir par, contient, etc).

Les types date et bool existent également mais pas encore documenté.

Trackbacks

Utilisez le lien ci-dessous pour envoyer un trackback depuis votre site:
http://frederic.logier.org/trackbacks?article_id=plugin-rails&day=30&month=01&year=2007

Commentaires

laisser un commentaire

Commentaires