9

I'm tring to set values for two models that have a has_one association using accepts_nested_attributes_for, but nothing in the fields_for is being shown on the view.

I have confirmed the same code works on Rails 2.x, and it works fine when its a has_many. Code below.

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

View

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

..And after copying that and looking at it, that's a horrible class name.

Saifis
  • 1,981
  • 1
  • 19
  • 35

1 Answers1

12

In rails 3 you should use (notice the equal sign in <%=):

<%= f.fields_for [...]

instead of :

<% f.fields_for

same goes with form_for

Jonathan Allard
  • 16,498
  • 10
  • 52
  • 72
plehoux
  • 787
  • 2
  • 7
  • 21