Ruby on Rails构成了简化构建

时间:2011-06-07 03:33:50

标签: ruby-on-rails forms

感谢您花时间阅读本文。

我正在尝试构建一个接受多个成员的表单。它从3个成员开始,然后有一个javascript按钮,添加一个成员,最多100个成员。我可以弄清楚如何做到的唯一方法是通过硬编码所有表单元素,如下面1..100(我只显示1-4)然后隐藏所有额外的东西。然后javascript按钮只显示下一个元素。有没有办法在javascript中生成表单元素?或者有没有办法使用循环来创建100个硬编码元素?

    <tr id="member_1">
      <td></td>
      <td class="field"><%= text_field(:members, :member_1_name, :value=>@members[:member_1_name]) %></td>
      <td class="field"><%= text_field(:members, :member_1_number, :value=>@members[:member_1_number]) %></td>
    </tr>
    <tr>
      <td></td>
      <td class="heading">Member Names</td>
      <td></td>
    </tr>
    <tr id="member_2">
      <td></td>
      <td class="field"><%= text_field(:members, :member_2_name, :value=>@members[:member_2_name]) %></td>
      <td class="field"><%= text_field(:members, :member_2_number, :value=>@members[:member_2_number]) %></td>
    </tr>
    <tr id="member_3">
      <td></td>
      <td class="field"><%= text_field(:members, :member_3_name, :value=>@members[:member_3_name]) %></td>
      <td class="field"><%= text_field(:members, :member_3_number, :value=>@members[:member_3_number]) %></td>
    </tr>  
    <tr id="member_4" style="display:none">
      <td></td>
      <td class="field"><%= text_field(:members, :member_3_name, :value=>@members[:member_3_name]) %></td>
      <td class="field"><%= text_field(:members, :member_3_number, :value=>@members[:member_3_number]) %></td>
    </tr>

再次感谢!如果有什么不清楚的话,请告诉我们

2 个答案:

答案 0 :(得分:2)

这类功能包含在第196集和第116集中。 197年的RailsCasts

Nested Model Forms Part 1 | Nested Model Forms Part 2

答案 1 :(得分:0)

您应该只创建第一个成员,并在页面上放置带模板的隐藏div。 Javascript按钮应该使用此模板并插入新字段。例如,请参阅:http://embeddedjs.com/