我尝试使用form_for
帮助程序来创建具有可变数量文本字段的表单。
在一个页面上,我有一个包含两个值的表单:
<%= form_for :specs, url: specs_path do |f| %>
<p>
<%= f.label :title %><br>
<%= f.text_field :title %>
</p>
<p>
<%= f.label :sections %><br>
<%= f.text_field :sections %>
</p>
<p>
<%= f.submit %>
</p>`
<% end %>
这将我带到另一个页面,我希望有一个表格,其中包含可变数量的文本字段。字段数为= <%= @specs.sections %>
我还没有添加正则表达式;)(一旦我确定这是最好的方法,我会这样做)
如果<%= @specs.sections %>
是两个,我想要一个看起来像这样的表单:
<%= form_for :sections, url: sections_path do |f| %>
<p>
<%= f.label :head_chord %><br>
<%= f.text_field :head_chord %>
</p>
<p>
<%= f.label :section_1_chord %><br>
<%= f.text_field :section_1_chord %>
</p>
<p>
<%= f.label :section_2_chord %><br>
<%= f.text_field :section_2_chord %>
</p>
<p>
<%= f.label :foot_chord %>
<%= f.text_field :foot_chord%>
</p>
<p>
<%= f.label :camber %>
<%= f.text_field :camber %>
</p>
<p>
<%= f.label :draft_position %>
<%= f.text_field :draft_position %>
</p>
<p>
<%= f.submit %>
</p>
<% end %>
</p>
(部分是唯一可变的方面。) 我很感激任何建议! 感谢阅读:D
答案 0 :(得分:0)
如果要将可变数量的参数传递给服务器,最好将它们放入数组中。这样您的控制器就可以更轻松地处理它们。因此,不是section_1_chord
,section_1_chord
,...,而是section_chord[]
。你可以这样做:
<%= form_for :sections, url: sections_path do |f| %> <p>
<p>
<%= f.label :head_chord %><br>
<%= f.text_field :head_chord %>
</p>
<%= @specs.sections.each_with_index do |section, index| %>
<p>
<%= label_tag "section_chord-#{index}", "section #{index}"%><br>
<%= text_field_tag 'section_chord[]', nil, id: "section-chord-#{index}" %>
</p>
<% end %>
这样rails将section_chord视为数组。这段代码是未经测试的,很可能需要一些清理,但它应该有效。