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 (컨트롤러 메소드에서 빌드하는 것을 잊어 버린 경우) 인 경우이 문제가 발생할 수 있다고 들었지만 그곳에 있습니다. 나는 조건부 코드를보기 위해서 추가했다.
그래서 누가 내 이마를 때 리게 할까? 내가 뭘 놓치고 있니?
감사합니다.
두 문에서'='를 벗어나면 'Taxon' 필드가 렌더링되지 않으므로'form_for'는 이전 구문에서는 작동하지만'fields_for'에서는 작동하지 않는 것 같습니다 (Rails 3 of 코스). – zetetic
이런 젠장, 네, 그게 행방 불명이야. 얼마나 이상해야 할 것인가! 감사! – CharlieMezak
아직 렌더링이 안되는 또 다른 이유는 컨트롤러의 새로운 동작 (간과 할 수도 있음) 내에서 처음으로 연결을 '빌드'하도록 요청하지 않았기 때문입니다. – Dominic