В настоящее время у меня есть форма для регистрации на событие с неограниченным количеством участников в форме регистрации, поэтому вы можете добавлять формы через javascript, который я скопировал из генератора fields_for первого обязательного участника.
Теперь у меня есть гендерное поле, которое просто называется :gender, и около 10 других входных данных для других личных данных.
Поле гендера, однако, является единственным, которое не отправляется для каждого участника. поле просто отсутствует.
помощник fields_for назвал его, например:
event[participants][][email]
event[participants][][gender]
когда я добавляю 3 участников, я получаю массив вроде:
[{email: email1, gender: male}, {email:email2}, {email:email3}]
поставить на рельсы.
поскольку переключатель сгруппирован по имени, я подумал, что могу добавить индекс в пустые скобки, чтобы он выглядел как
event[participants][1][gender]
для 2-го участника.
это ведет к
ERROR TypeError: expected Array (got Rack::Utils::KeySpaceConstrainedParams) for param `participants'
в Вебрике.
Я немного смущен тем, как продолжить, возможно, давая всем входным данным индекс, который совсем не похож на рельсы.
Любые предложения, как заставить это работать? моя цель - отправить пол для каждого участника.
С уважением и благодарностью, Даниил
the code, simplified:форма:
= form_for @signup do |f|
- participant_count = @signup.participants.count
- @signup.participants.each_with_index do |participant,index|
= f.fields_for "participants[]", participant do |p|
= render :partial=>'participant_form', |
:locals=>{:p=>p, :participant=>participant, :index=>index, :participant_count => participant_count}
_participant-partial для одного работающего ввода и пола:
%table
%tr
%th
Gender / Only sent for the first participant:(
%span *
%td
=p.radio_button :gender, 'male'
%span Male
=p.radio_button :gender, 'female'
%span Female
%tr
%th
Name
%span *
%td
= p.text_field :first_name / this works just fine! for EACH participant.
приводит к этому HTML-коду:
<input id="event_participants__first_name" name="event[participants][][first_name]" size="30" type="text" value="" />
and
<input id="event_participants__gender_male" name="event[participants][][gender]" style="float:left; margin-right: 20px;" type="radio" value="male">
for each participant.