2009-12-21 5 views
1

J'ai une boîte multi-sélection dans un formulaire. les éléments de cette zone de sélection sont ajoutés/supprimés de javascript en utilisant DOM (par exemple http://www.digimantra.com/tutorials/add-append-remove-value-in-select-html-element-using-javascript/). Je veux obtenir tous les éléments dans la boîte de sélection à l'intérieur du contrôleur lorsque le formulaire est soumis.ruby ​​on rails: comment obtenir la liste des éléments dans la boîte de sélection des formulaires soumis

Y at-il un moyen facile de le faire?

merci.

Répondre

2

La liste des choix possibles dans une zone de sélection n'est pas conservée dans la soumission de formulaire, seules les options sélectionnées sont envoyées. La seule façon d'envoyer la liste des options dans la boîte de sélection au moment de la soumission est d'ajouter/supprimer des étiquettes cachées énumérant les choix/valeurs.

Si vous mettez à jour l'élément DOM sélectionné en ajoutant l'option enfants avec Javascript, vous devriez avoir trop de chemin à parcourir. Juste avoir le javascript qui ajoute ou supprime une option à/de la liste ajouter ou supprimer des champs cachés dans/du formulaire.

IE:

En supposant forme créée par cette partie:

<% from_for @user do |f| %> 
    <%=f.collection_select :selected_values, Values.all, :id, :name %> 
    <% Values.all.each do |v| %> 
    <%= hidden_field_tag "user[select_options][#{v.name}]", v.id %> 
<% end %> 

<%= link_to_function "Add Twenty option", 
    '$("select").insert(bottom: "<option value=\"20\">twenty</option>"); 
    $("form").insert(bottom: "<input type="hidden\" id=\"user_select_options_twenty\" 
     name=\"user[select_options][twenty]\" value=\"20\">"' 
%> 

<%= link_to_function "Remove Twenty option", 
    '$("select").select(\'[value="twenty"]\').remove(); 
    $("#user_select_options_twenty").remove()' 
%> 

En supposant que vous remplissez les valeurs cachées pour l'instruction select initial à la page charge ce à soumettre, params [: user] [: select_options] contiendra un hachage de toutes les options de sélection disponibles. Les clés de ce hachage sont les options affichées et les valeurs du hachage sont les valeurs de ces options de sélection.

Remarque: le code affiché n'a pas été testé. Ce n'est peut-être pas juste, mais cela devrait suffire à vous mettre sur la bonne voie.

Questions connexes