2010-01-28 37 views
0

在Ruby on Rails中的常規形式中,如果使用form_for構建模型,如API文檔狀態,form_for不會創建獨佔作用域,並且可以在form_for表單中使用form_tag函數。嵌套Rails窗體和使用label_tag,checkbox_tag和其他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 %> 

然而,以嵌套的形式中,標籤和字段具有由導軌自動生成要與給定的嵌套模型相關聯和名稱不重疊如果多個嵌套模型是立即創建。是否有可能仍然使用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有如果有多個孩子的唯一值。

是我想要做的可能嗎?

回答

1

查看docs對於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 %> 

當然,你必須處理通過的「優惠「自己登錄。