2010-11-03 29 views
9

Je cherche à définir des valeurs pour deux modèles qui ont une association has_one en utilisant accept_nested_attributes_for, mais rien dans fields_for n'est affiché sur la vue.Formulaire avec des attributs imbriqués avec une association has_one ne fonctionnant pas dans Rails 3

J'ai confirmé le même code fonctionne sur Rails 2.x, et il fonctionne très bien quand c'est un has_many. Code ci-dessous.

Modèle

class Parent < ActiveRecord::Base 

    has_one :child 
    accepts_nested_attributes_for :child 
end 

class Child < ActiveRecord::Base 

    belongs_to :parent 
end 

Contrôleur

def new 
    @parent = Parent.new 
    @parent.build_child 
end 

Voir

<%= form_for @parent do |f| %> 
    <div class="field"> 
    <%= f.label :name %><br /> 
    <%= f.text_field :name %> 
    </div> 

    <% f.fields_for :child do |builder| %> 

    <%= builder.label :childname %> 
    <%= builder.text_field :childname %> 
    <% end %> 

    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

..Et après avoir copié et que regarder, qui est un nom de classe horrible.

Répondre

12

Rails 3, vous devez utiliser (notez le signe égal à <%=):

<%= f.fields_for [...] 

au lieu de:

<% f.fields_for 

va de même avec form_for

+0

Merci qui a fait l'affaire. Je ne pensais pas que c'était quelque chose d'aussi simple. – Saifis

+0

Typo - devrait être f.fields_for –