fields_for для вложенного атрибута ничего не возвращает - PullRequest
1 голос
/ 19 декабря 2010

Я пытаюсь создать вложенную модель формы в Rails 3.0.3. Вот мои модели:

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-источнике. Я слышал, что это может произойти, если вложенная модель равна нулю (то есть, если я забыл построить ее в методе контроллера), но она есть. Я добавил условный код в представление, чтобы убедиться.

Итак, кто заставит меня ударить меня здесь по лбу? Чего мне не хватает?

Спасибо!

1 Ответ

8 голосов
/ 19 декабря 2010

Вы используете Rails 3?Если так, то должно быть:

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

и

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

Обратите внимание на равные.

...