另一个值的Rails form_for

时间:2014-09-13 18:10:30

标签: ruby-on-rails form-for

我尝试使用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

1 个答案:

答案 0 :(得分:0)

如果要将可变数量的参数传递给服务器,最好将它们放入数组中。这样您的控制器就可以更轻松地处理它们。因此,不是section_1_chordsection_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视为数组。这段代码是未经测试的,很可能需要一些清理,但它应该有效。