2010-11-03 20 views
9

Estoy intentando establecer valores para dos modelos que tienen una asociación has_one utilizando accept_nested_attributes_for, pero no se muestra nada en los fields_for en la vista.Forma con atributos anidados con una asociación has_one que no funciona en Rails 3

He confirmado que el mismo código funciona en Rails 2.x, y funciona bien cuando es un has_many. Código a continuación.

Modelo

class Parent < ActiveRecord::Base 

    has_one :child 
    accepts_nested_attributes_for :child 
end 

class Child < ActiveRecord::Base 

    belongs_to :parent 
end 

controlador

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

Ver

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

..Y después de copiar eso y mirarlo, eso es un nombre de clase horrible.

Respuesta

12

En los carriles 3 se debe utilizar (nótese el signo igual en <%=):

<%= f.fields_for [...] 

en lugar de:

<% f.fields_for 

mismo ocurre con form_for

+0

Gracias que hizo el truco. No pensé que fuera algo tan simple. – Saifis

+0

Typo - debería ser f.fields_for –

Cuestiones relacionadas