2011-02-13 2 views
1

을 사용하여 종속적 인 다형성 연결을 만드는 데 성공했지만 지금은 기존의 다형성을 할당하고 싶습니다.레일 다형성 지정

undefined method `id' for {"id"=>"4"}:ActiveSupport::HashWithIndifferentAccess 

모델 :

class Person < ActiveRecord::Base 
    has_one :address, :as => :addressable 
end 

class Company < ActiveRecord::Base 
    has_one :address, :as => :addressable 
end 

class Address < ActiveRecord::Base 
    belongs_to :addressable, :polymorphic => true 
end 

보기 : 결과 PARAMS 해시

<%= form_for @company do |f| %> 
    <p> 
    <%= f.label :company_name %><br /> 
    <%= f.text_field :company_name %> 
    </p> 

    <%= f.fields_for :address do |f| %> 
    <div class="field"> 
     <%= f.collection_select :id, Address.all, :id, :description, {:prompt => "-Select Address"} %> 
    </div> 
    <% end %> 

입니다

: 나는 오류를 받고 있어요 나에게 합리적인 보이는

"company"=>{"company_name"=>"myCompanyName", "address"=>{"id"=>"4"}} 

. 내가 도대체 ​​뭘 잘못하고있는 겁니까? d.collection_select-f.fields_for :address do |d|f.collection_select

답변

1

변경 f.fields_for :address do |f|

<%= form_for @company do |f| %> 
    <p> 
    <%= f.label :company_name %><br /> 
    <%= f.text_field :company_name %> 
    </p> 

    <%= f.fields_for :address do |d| %> 
    <div class="field"> 
     <%= d.collection_select :id, Address.all, :id, :description, {:prompt => "-Select Address"} %> 
    </div> 
    <% end %> 
<% end %> 
+0

당신의 제안을 시도했습니다. 같은 오류. 이 경우에 params 해시는 어떻게 보이게되어 있습니까? – SooDesuNe

+0

블록 매개 변수는 항상 블록에 국한되어 있으므로 fields_for의 양식 빌더 객체 f는 외부 f_object_for와 동일하지 않습니다. 이는 f.object_id를 검사하여 볼 수 있습니다. 읽을 수 있도록 다른 이름을 사용하는 것이 현명합니다. – zetetic

+1

'accepts_nested_attributes_for : 주소'가'Company' 모델에 표시되는지 확인하십시오. – fl00r

1

를 잘못 입력되지 않은 경우이 같은 PARAMS 해시 생산하는 PersonCompanyaccepts_nested_attributes_for :address를 추가 할 수 있어야한다 :

{"company"=>{"company_name"=>"myCompanyName", "address_attributes"=>{"id"=>"4"}}}