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.