1

在 Ruby on Rails 的常规表单中,如果使用 form_for 构建模型,如 API 文档所述,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 具有唯一值。

我正在尝试做的事情可能吗?

4

1 回答 1

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 %>

当然,您必须自己处理“要约”登录。

于 2010-01-28T08:32:55.457 回答