2010-11-03 13 views
9

Próbuję ustawić wartości dla dwóch modeli, które mają asocjację has_one, używając accepts_nested_attributes_for, ale nic w polach_for nie jest pokazywane w widoku.Formularz z zagnieżdżonymi atrybutami ze skojarzeniem has_one nie działającym w Railsach 3

Potwierdziłem, że ten sam kod działa na Railsach 2.x i działa poprawnie, gdy ma wiele. Kod poniżej.

model

class Parent < ActiveRecord::Base 

    has_one :child 
    accepts_nested_attributes_for :child 
end 

class Child < ActiveRecord::Base 

    belongs_to :parent 
end 

Controller

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

Zobacz

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

..i po skopiowaniu tego i patrząc na to, że to okropna nazwa klasy.

Odpowiedz

12

w szynach 3 należy użyć (zawiadomienie znak równości w <%=):

<%= f.fields_for [...] 

zamiast:

<% f.fields_for 

samo z form_for

+0

Dzięki że wystarczyły. Nie sądziłem, że to coś tak prostego. – Saifis

+0

Typo - powinno być f.fields_for –