plugin Rails : resultset-autofilter
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



