i当前确实有一个用于事件签名的表格,无限额的注册形式参与者,因此您可以通过JavaScript附加表单,我将其复制为fields_for fieldator forderator fenerator fenerator
的第一个必须参与者。现在,我有一个性别野外,刚刚称为:性别,就像其他个人数据的其他10个输入一样。
性别菲尔德是唯一不适合每个参与者发送的人。该字段只是缺少。
fields_for助手命名为:
event[participants][][email]
event[participants][][gender]
当我添加3个参与者时,我会得到一个类似的数组:
[{email: email1, gender: male}, {email:email2}, {email:email3}]
设置为导轨。
由于一个无线电按钮是由其名称组成的,我想我可能会将索引添加到空括号中,以使其像
一样event[participants][1][gender]
对于第二参与者。
这导致
ERROR TypeError: expected Array (got Rack::Utils::KeySpaceConstrainedParams) for param `participants'
在Webrick中。
我对如何继续的方式有些困惑,给所有输入的索引可能根本不像Rails-way。
有什么建议如何使其工作?我的目的是让每个参与者发送性别。
最好的问候,谢谢,丹尼尔
代码,简化:表格:
= 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.
好吧,因为radiobuttons需要用他们的名字分组 - 这是他们的感觉 - 我不得不在这里砍掉自己的路。
在我的解决方案中,我刚刚添加了一些与阵列相关的索引无线电 - 触发JavaScript函数,该函数设置了正确的,阵列``隐藏''隐藏字段的值。
。有效。