2012-01-01 2 views
0
class User < ActiveRecord::Base 
    belongs_to :person, :dependent => :destroy 
    accepts_nested_attributes_for :person, :allow_destroy => true 
    attr_accessible :person_attributes 
end 

class Person < ActiveRecord::Base 
    has_many :phone_numbers, :as => :phoneable, :dependent => :destroy 
    has_one :user 
    accepts_nested_attributes_for :phone_numbers 
end 

class PhoneNumber < ActiveRecord::Base 
    belongs_to :phoneable, :polymorphic => true 
end 

<%= form_for @user do |user_form| %> 
    <%= user_form.fields_for :person do |person_form| %> 
     <%= person_form.fields_for :phone_numbers do |phone_number_form| %> 
      <%= phone_number_form.text_field :number %> 
     <% end %> 
    <% end %> 
<% end %> 

이것은 작동합니다. 그것은 내가 기대하는 바를 수행하지만 내 양식에 하나 이상의 전화 번호가 필요합니다. 어떻게해야합니까?한 형태의 다중 다형 필드

user[person_attributes][phone_numbers_attributes][0][number] 

왜 fields_for add [0]가 발생합니까?

여러 전화 번호를 원하면 두 번째 전화 번호를 원하십니까?

user[person_attributes][phone_numbers_attributes][1][number] 

그렇다면 어떻게됩니까?

데이터베이스에 전화 번호가 여러 개인 경우 다음 질문은 각 전화 번호와 함께 다른 전화 번호 속성을 포함시키는 방법입니다. 예 : 설명

user[person_attributes][phone_numbers_attributes][0][number] 
user[person_attributes][phone_numbers_attributes][0][description] 

답변

0

fields_for은 "[0]"그것 많은 관계하고 각 관계 부재의 지표로하는 배열을해야하기 때문에 [0], [1] ...

추가

그래, 두 번째는 [1], 레일은 그 자체로 도우미를 통해 추가됩니다. 다른 전화 번호를 포함

속성 :

<%= form_for @user do |user_form| %> 
    <%= user_form.fields_for :person do |person_form| %> 
     <%= person_form.fields_for :phone_numbers do |phone_number_form| %> 
      <%= phone_number_form.text_field :number %> 
      <%= phone_number_form.text_field :description %> 
     <% end %> 
    <% end %> 
<% end %>