在Ruby on Rails中的常规表单中,如果使用form_for构建模型,作为API docs状态,form_for不会创建独占作用域,并且可以在form_for表单中使用form_tag函数。
例如:
<% form_for :person, @person, :url => { :action => "update" } do |f| %>
First name: <%= f.text_field :first_name %>
Admin? : <%= check_box_tag "person[admin]", @person.company.admin? %>
<% end %>
但是,在嵌套表单中,标签和字段具有由Rails自动生成的名称,以与给定的嵌套模型关联,如果一次创建多个嵌套模型,则不会重叠。是否仍然可以使用form_tag函数?
我想做这样的事情:
<% person_form.fields_for :children do |child_form| %>
Name: <%= child_form.text_field :name %>
Give up for Adoption?: <%= check_box_tag "adoption_" + child_form_index, false %>
<% end %>
但是,我不知道如何访问child_form的索引,以确保check_box_tag在有多个子项时具有唯一值。
我正在尝试做什么?
答案 0 :(得分:1)
在一对多的情况下查看fields_for
each
。
在我看来,基本上您可以使用each_with_index
(或 <% form_for @person, :url => { :action => "update" } do |person_form| %>
...
<% @person.children.each_with_index do |child, index| %>
<% person_form.fields_for :children, child do |children_fields| %>
Name: <%= children_fields.text_field :name %>
Give up for Adoption?: <%= check_box_tag "adoption_" + index, false %>
<% end %>
<% end %>
<% end %>
)并将块变量与符号一起传递:
{{1}}
当然,您必须自己处理“收养要约”登录。