Re: Re: Help needed understanding "fields_for" and resultant controller code

Bente Pieck
Wed, 29 Dec 2010 20:50:35 -0000

On 29/12/10 21:11, Jim Burgess wrote:
> Thanks for the answer Philip. It is good to get confirmation
> that I have understood things correctly.
>
>> Yes.  And it only does this if the update to @employee was successful
>> first.
> Is the order particularly significant in this case (i.e. that it
> attempts to update @employee first)?
>
> Obviously it would be bad to update one record and not the other, but
> won''t rails throw an error and re-render the
''edit'' view if validation
> for either @employee or @employee.department fails?
>

You should use

   accepts_nested_attributes_for :department

in your employee model.

than you can just do:

<% form_for @employee do |form| %>

   ...

   <% form.fields_for @employee.department do|department_fields|  %>

       <%= department_fields.label :name,"Department name"
%>
       <%= department_fields.text_field :name %>

   <% end %>

   ...

<% end %>



and with:

if @employee.update_attributes(params[:employee])
   do something
else
   render :edit
end


And I hope you will get, what you want to get.


--
best regards
Bente Pieck