2009-02-26 8 views
2

J'écris un CMS pour diverses formes et autres, et je trouve que je crée beaucoup de listes déroulantes. Je n'ai pas vraiment envie de déblayer ma base de données avec des tonnes de tableaux de valeurs clés/chaînes aléatoires pour des listes déroulantes simples avec 2-4 options qui changent très rarement. Que faites-vous pour gérer cela de manière responsable?Garder les listes déroulantes DRY dans une application web

Ceci est indépendant de la langue, mais je travaille dans Rails, si quelqu'un a des conseils spécifiques.

Répondre

4

Nous avons tout placé dans une seule table LookUp dans la base de données, avec une colonne mappée à une énumération décrivant la recherche pour laquelle elle était destinée (titre, pays, etc.).

Cela nous a permis d'ajouter la flexibilité d'une option «Autre, veuillez spécifier» dans les listes déroulantes de recherche. Nous avons fait un contrôle qui encapsulé ceci, avec une propriété pour activer ou désactiver ce comportement au cas par cas.

Si l'utilisateur final a sélectionné "Autre, veuillez spécifier", une zone de texte apparaît pour lui permettre d'entrer sa propre valeur. Cela serait ajouté à la table de recherche, mais signalé comme un élément ad hoc.

La table contenait un indicateur indiquant l'état de chaque valeur de recherche: Actif, Inactif, AdHoc. Seuls les actifs apparaîtraient dans la liste déroulante; Les AdHoc étaient ceux créés via l'option "Autre, précisez". Une page d'administration a montré la fréquence d'utilisation des valeurs AdHoc, permettant aux administrateurs du site de promouvoir des valeurs populaires courantes dans l'utilisation générale (c'est-à-dire de changer leur indicateur d'état en actif).

Cela pourrait bien être exagéré pour votre application, mais cela a très bien fonctionné pour la nôtre: l'application était essentiellement presque entièrement des opérations CRUD sur des données très spécifiques à l'entreprise. Nous avons eu des dizaines de recherches sur le site que le client voulait pouvoir gérer lui-même. Cela leur a donné une flexibilité totale sans aucune intervention de notre part.

+0

J'aime vraiment cette idée. Je ne sais pas si je vais aller avec quelque chose d'aussi élaboré, mais certainement bon pour la réflexion. –

+0

Comment vous êtes-vous assuré que vos différentes listes déroulantes étaient pointées vers le bon groupe? Avez-vous codé en dur la clé de groupe dans votre code? –

+0

Nous définirions la propriété chaque fois que nous placerions une instance du contrôle de recherche sur une page. C'est facile à faire de manière déclarative dans asp.net; Je n'ai pas travaillé à Ruby. Le contrôle mourrait horriblement si nous oublions de le définir, donc nous le verrons immédiatement lors du débogage. – teedyay

3

Vous avez froid une seule table déroulante avec une colonne supplémentaire pour dire ce que la baisse est en baisse pour ... limiter les résultats avec une clause where ...

1

A ma position actuelle, nous avons mis en place une table LookupCode qui contient une colonne CodeGroup, Code et Signification, ainsi que d'autres (comme actif). De cette façon, vous avez une seule table qui contient toutes vos valeurs de recherche sont dans un seul emplacement et vous pouvez faire quelques recherches rapides pour lier à vos listes déroulantes.

Questions connexes