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

ただし、複数の子がいる場合に check_box_tag が一意の値であることを確認するために、child_form のインデックスにアクセスする方法がわかりません。

私がやろうとしていることは可能ですか?

4

1 に答える 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 に答える