我有一个窗体中的多选框。使用DOM从javascript中添加/删除此选择框中的元素(例如http://www.digimantra.com/tutorials/add-append-remove-value-in-select-html-element-using-javascript/)。 我想在表单提交时获取控制器内部选择框中的所有元素。红宝石在轨道上:如何获取从提供的形式的选择框中的项目列表
有没有简单的方法来做到这一点?
谢谢。
我有一个窗体中的多选框。使用DOM从javascript中添加/删除此选择框中的元素(例如http://www.digimantra.com/tutorials/add-append-remove-value-in-select-html-element-using-javascript/)。 我想在表单提交时获取控制器内部选择框中的所有元素。红宝石在轨道上:如何获取从提供的形式的选择框中的项目列表
有没有简单的方法来做到这一点?
谢谢。
表单提交中未保留选择框中可能的选项列表,只发送所选选项。
在提交时发送选择框中的选项列表的唯一方法是添加/删除列出选项/值的隐藏标签。
如果您通过使用Javascript添加选项子元素来更新选择DOM元素,那么应该有更远的距离。只需要在列表中添加或删除选项的javascript,可以在窗体中添加或删除隐藏字段。
IE:通过创建
假设形式该部分:
<% 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()'
%>
假设你填充在页面加载初始选择语句隐藏值这在提交,则params [:用户] [:在select_options]将包含所有可用选项的散列。这个哈希中的键是显示的选项,哈希的值是这些选择选项的值。
注意:发布的代码是未经测试的。这可能是不对的,但它应该足以让你走上正轨。