ruby on rails: как получить список элементов в поле выбора из поданных форм - PullRequest
1 голос
/ 22 декабря 2009

У меня есть поле множественного выбора в форме. элементы в этом поле выбора добавляются / удаляются из JavaScript с использованием DOM (например, http://www.digimantra.com/tutorials/add-append-remove-value-in-select-html-element-using-javascript/). Я хочу получить все элементы в поле выбора внутри контроллера при отправке формы.

Есть ли простой способ сделать это?

спасибо.

1 Ответ

2 голосов
/ 22 декабря 2009

Список возможных вариантов выбора в поле выбора не сохраняется при отправке формы, отправляются только выбранные параметры.

Единственный способ отправить список опций в поле выбора на момент отправки - добавить / удалить скрытые теги, перечисляющие варианты выбора / значения.

Если вы обновляете элемент select DOM, добавляя дочерние опции с Javascript, вам не нужно идти дальше. Просто используйте 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 [: user] [: select_options] будет содержать хэш всех доступных опций выбора. Ключи в этом хэше - это показанные параметры, а значения хэша - это значения этих опций выбора.

Примечание: опубликованный код не проверен. Возможно, это не правильно, но этого должно быть достаточно, чтобы поставить вас на правильный путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...