1

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ソースにはそれらのヒントはありません。ネストされたモデルが nil の場合 (つまり、コントローラー メソッドでモデルを構築するのを忘れた場合) に、これが発生する可能性があると聞いたことがありますが、それはあります。念のため、ビューに条件付きコードを追加しました。

それで、誰が私に額を叩かせるのですか?私は何が欠けていますか?

ありがとう!

4

1 に答える 1

8

Rails 3 を使用していますか? その場合、次のようになります。

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

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

等しいことに注意してください。

于 2010-12-18T21:56:37.563 に答える