2010-06-25 7 views
0

Je tente de créer un filtre sur une application rails qui utilise plusieurs cases à cocher correspondant à un db-colonne/attribut pour filtrer les résultats, mais je ne suis pas sûr de savoir comment allez-y exactement.Filtrage des résultats dans des rails avec des cases à cocher à valeurs multiples

EX.
index affiche une liste des conditions météorologiques des dernières années et que vous souhaitez filtrer
Ces attributs font partie d'une classe Day.

Voir
<fieldset>
<legend>Sky</legend>
<%= check_box_tag('filter[sky][]', 'sunny') %>Sunny
<%= check_box_tag('filter[sky][]', 'partly sunny') %>Partly Sunny
<%= check_box_tag('filter[sky][]', 'overcast') %>Overcast
</fieldset>
<fieldset>
<legend>Humidity</legend>
<%= check_box_tag('filter[humidity][]', 'low') %>Low
<%= check_box_tag('filter[humidity][]', 'average') %>Average
<%= check_box_tag('filter[humidity][]', 'high') %>High
</fieldset>
`

Je veux alors être en mesure de passer par les options pour chaque filtre et appliquer tous ceux qui ont été sélectionnés. Donc, si je veux voir tous les jours qui étaient ensoleillés avec une humidité faible et moyenne, je voudrais vérifier ces boîtes et obtenir des jours qui ont été sommy soit avec une faible humidité ou une humidité moyenne. En SQL, nous parlerions d'une clause IN.

Je suis assez nouveau sur les rails, donc je ne suis pas sûr s'il y a des fonctionnalités spéciales de rails que je devrais utiliser pour cela ou non. Ai-je juste besoin d'écrire une fonction pour parcourir les cases à cocher et construire l'instruction SQL?

Toute aide est grandement appréciée. Je modifierai ce post si j'en ai besoin pour clarifier quoi que ce soit.

Répondre

0

dépend de la version de Rails vous êtes, mais je vous suggère de regarder dans les étendues dynamiques:

http://ryandaigle.com/articles/2008/12/29/what-s-new-in-edge-rails-dynamic-scope-methods

Si named scopes sont complètement nouveau pour vous, vous devriez probablement lire l'article lié à partir de cette page dans le deuxième paragraphe (juste après le premier extrait de code). Ce que vous suggérez est très légèrement plus complexe parce que vous voulez être en mesure de OU dans le ciel et l'humidité et puis ET ensemble, mais rien 20 minutes de bricolage ne produira pas de résultat pour - I Je pense que vous profiterez de l'exercice vous-même si vous êtes nouveau sur Rails (si je me trompe, dites-le :-)).

Questions connexes