Как отправить несколько одинаковых форм с одной страницы в Rails - желательно одной кнопкой - PullRequest
4 голосов
/ 22 февраля 2012

На моей новой странице просмотра у меня есть:

<% 10.times do %>
  <%= render 'group_member_form' %>     
<% end %>

Теперь эта форма содержит поля: first_name, last_name, email_address и mobile_number. По сути, я хочу иметь возможность заполнять поля всех форм в один клик, который затем передает каждое в базу данных в виде уникальной строки / id.

Какой самый простой способ сделать это?

Примечание. Число вызовов вызывается из переменной. Любой совет, спасибо!

Ответы [ 2 ]

13 голосов
/ 23 февраля 2012

У вас должна быть только одна форма (вы должны поместить только поля в group_member_form частично). На ваш взгляд у вас должно быть что-то вроде:

<%= form_tag "/members" do %>
  <% 10.times do %>
    <%= render 'group_member_form' %>     
  <% end %>
  <%= submit_tag "Submit" %>
<% end %>

и в _group_member_form.html.erb вы должны иметь

<%= text_field_tag "members[][first_name]" %>
<%= text_field_tag "members[][last_name]" %>
<%= text_field_tag "members[][email_address]" %>
<%= text_field_tag "members[][mobile_number]" %>

Таким образом, когда форма отправляется, params[:members] в контроллере будет массивом хэшей элементов. Так, например, чтобы получить адрес электронной почты от четвертого участника после отправки формы, вы звоните params[:members][3][:email_adress].

Чтобы понять, почему я написал _group_member_form.html.erb так, взгляните на это:

http://guides.rubyonrails.org/form_helpers.html#understanding-parameter-naming-conventions.

0 голосов
/ 22 февраля 2012

Вы также можете использовать accepts_nested_attributes_for в своей модели и использовать fields_for в своей форме.

Отправка нескольких форм, afaik, только javascript, если формы являются удаленными: true, и вы просматриваете каждую из них изатем отправьте.

$("form.class_of_forms").each(function() {
  $(this).submit();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...