Question

Je suis en train de créer un modèle de formulaire imbriqué dans Rails 3.0.3. Voici mes modèles:

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

Voici la méthode du contrôleur:

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

Et voici la forme:

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 %>

Quand je lance la nouvelle méthode, les champs pour taxon ne se présentent pas. Il n'y a pas soupçon d'entre eux dans la source html. Je l'ai entendu dire que cela peut se produire si le modèle imbriqué est nul (à savoir si je l'avais oublié de le construire dans la méthode du contrôleur), mais il est là. Je glissai code conditionnel dans la vue juste pour être sûr.

Alors, qui va me faire gifler mon front ici? Qu'est-ce que je manque?

Merci!

Était-ce utile?

La solution

Utilisez-Rails 3 vous? Dans ce cas, il devrait être:

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

et

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

Notez les égaux.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top