fields_for pour les retours d'attributs imbriqué rien
-
11-10-2019 - |
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!
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