Nested Has_one Relationship with Fields_for and Attr_accessible in Model Class
To make child attributes accessible to your model through a nested forms (Rails 2.3) you’ll need to add the “#{child_class}_attributes” to the attr_accessible method in your parent class. If you don’t use attr_accessible in your parent model (you would do this to restrict certain attributes to be accessed via a web form) then you should be all set.
Below is an example where User has_one Profile with the favorite_color attribute being set/updated in the nested form.
class User < ActiveRecord::Base has_one :profile #child class accepts_nested_attributes_for :profile attr_accessible :profile_attributes # the format is the child_class followed by the "_attributes" end
And the form would like this…
<% form_for @current_user do |f| %>
<% f.fields_for :profile do |profile| %>
<%= profile.text_field :favorite_color %>
<% end %>
<% end %>
Nested Attributes in a Form for Has_One Model Association in Rails
Just for reference…
class Member < ActiveRecord::Base
has_one :member_profile
accepts_nested_attributes_for :member_profile
end
<p>
<% form_for @member do |f| -%>
<%= f.label :fullname %> <%= f.text_field :fullname %>
<% f.fields_for :member_profile, @member.member_profile do |member_profile|%>
<p><%= member_profile.label :about %><%= member_profile.text_field :about %></p>
<p><%= member_profile.label :favorite_color %><%= member_profile.text_field :favorite_color %></p>
<% end %>
</p>


