Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Form with nested attributes with a has_one association not working in Rails 3

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.

like image 905
Saifis Avatar asked Nov 03 '10 13:11

Saifis


1 Answers

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

<%= f.fields_for [...]

instead of :

<% f.fields_for

same goes with form_for

like image 100
plehoux Avatar answered Nov 06 '22 22:11

plehoux