2010-06-24 8 views
0

J'ai un contrôle de forme multisélect (figure 1). Lorsque je sélectionne plus d'une valeur, Firefox envoie les deux valeurs (figure 2). Mais seule la dernière valeur est envoyée en tant que valeur d'entrée à mon contrôleur (figure 3). Comment puis-je transmettre toutes ces valeurs à mon contrôleur?Capturer les rails 3 Entrées d'entrée multi-sélection

<form action="html_items/search" method="post" > 

    <!-- Criteria --> 
    <div style="float:none;"> 
     <label>Content Provider </label> 
     <select multiple id="content_provider" name="content_provider"> 
     <option value="FLR">Flare</option> 
     <option value="SLDT">Slashdot</option> 
     </select> 
    </div> 

    <input type="submit" value="Search" /> 

    </form> 

fig. 1

Parametersapplication/x-www-form-urlencoded
content_provider FLR
content_provider SLDT
fig. 2

params [{ "content_provider" => "SLDT", "contrôleur" => "html_items", "action" => "recherche"}]
...
fig. 3

Merci
Tim

Répondre

1

La première chose est que si vous voulez créer un tableau des éléments qui sont sélectionnés, besoin de nommer votre <select> quelque chose comme <select name='foo[]'>

Suivant .. Si rien n'est sélectionné, rien ne s'affichera. Cela a du sens, mais cela m'a bloqué un peu. Je faisais ajax où la sélection gauche était résultats de recherche et la droite était la liste complète.

Je viens d'ajouter un .click(function(){}); à mon bouton de soumission pour régler chaque élément de gauche sur sélectionné avec jQuery et les éléments apparaissaient dans les paramètres sous forme de tableau. Dans l'exemple ci-dessous, vous devriez voir le premier élément apparaître.

<select multiple id="content_provider" name="content_provider"> 
     <option value="FLR" selected>Flare</option> 
     <option value="SLDT">Slashdot</option> 
</select>