2010-12-18 6 views
1

Rails 3.0.3에서 중첩 된 모델 양식을 만들려고합니다. 여기 내 모델은 다음과 같습니다 여기 중첩 된 특성에 대한 fields_for는 아무 것도 반환하지 않습니다.

class Bird < ActiveRecord::Base 
    has_one :taxon, :as => :organism 
    accepts_nested_attributes_for :taxon 
end 

class Taxon < ActiveRecord::Base 
    belongs_to :organism, :polymorphic => true 
end 

컨트롤러 방법입니다 :

def new 
    @bird = Bird.new 
    @bird.build_taxon 
end 

그리고 여기 형태이다 : 나는 새로운 방법을 실행하면

New Bird 
<% form_for @bird do |f| %> 
<p> 
    <%= f.label :wingspan %> 
    <%= f.text_field :wingspan %> 
</p> 
<p> 
    <%= f.label :body_length %> 
    <%= f.text_field :body_length %> 
</p> 
<% f.fields_for :taxon do |builder| %> 
    <%= builder.label :common_name %> 
    <%= builder.text_field :common_name %> 
    <%= builder.label :genus_name %> 
    <%= builder.text_field :genus_name %> 
    <%= builder.label :species_name %> 
    <%= builder.text_field :species_name %> 
<% end %> 
<%= f.submit %> 
<% end %> 

, 분류군에 대한 필드는하지 않습니다 나타나다. html 소스에는 힌트가 없습니다. 중첩 된 모델이 nil (컨트롤러 메소드에서 빌드하는 것을 잊어 버린 경우) 인 경우이 문제가 발생할 수 있다고 들었지만 그곳에 있습니다. 나는 조건부 코드를보기 위해서 추가했다.

그래서 누가 내 이마를 때 리게 할까? 내가 뭘 놓치고 있니?

감사합니다.

답변

8

레일 3을 사용하고 있습니까? 그렇다면 그것은해야한다 :

<%= form_for @bird do |f| %> 

<%= f.fields_for :taxon do |builder| %> 

참고 같습니다.

+0

두 문에서'='를 벗어나면 'Taxon' 필드가 렌더링되지 않으므로'form_for'는 이전 구문에서는 작동하지만'fields_for'에서는 작동하지 않는 것 같습니다 (Rails 3 of 코스). – zetetic

+0

이런 젠장, 네, 그게 행방 불명이야. 얼마나 이상해야 할 것인가! 감사! – CharlieMezak

+0

아직 렌더링이 안되는 또 다른 이유는 컨트롤러의 새로운 동작 (간과 할 수도 있음) 내에서 처음으로 연결을 '빌드'하도록 요청하지 않았기 때문입니다. – Dominic

관련 문제