Update multiple tables with one form

Hi!

I'm new to this group and new to RoR. Because I want to learn RoR I
defined a project for myself for learning purposes. So I think this
will be my first question of quite a few that will follow.

I try to update multipe tables after sending a form. My form is very
basic by now and has a title and a short description and a long
description. Idea is that there will be multiple description fields
later. So the long desc is in another table. I set up all this foreign
key, belongs_to and has_many stuff and I'm now able to create a new
document in which all data is stored in the right tables. But I'm not
able to update it.

This is how my update method looks right now:

def update
  @document = Document.find(params[:id])
  @text_items = TextItem.find(:all)
  @text_items.each { |ti| @document.text_items << ti }
  if @document.update_attributes(params[:document])
    flash[:notice] = 'Document was successfully updated.'
    redirect_to :action => 'show', :id => @document
  else
    render :action => 'edit'
  end
end

I did not get an error but the data from my text_items will not be
saved. I read through my books now multiple times and searched the
internet but I did not find a solution.

Can somenone please give me a hint? Thanks.

Regards,
Stefan

Hi Stefanm

Stefan Frede wrote:

I try to update multipe tables after sending a form.

The easiest way to handle this is to use form_tag instead of form_for. Then
in your controller you'll individually assign values from the params hash to
the appropriate model.

HTH,
Bill

http://railscasts.com/episodes/73
http://railscasts.com/episodes/74
http://railscasts.com/episodes/75

Michael

Thanks. I don't understand it completely what happened in the
screencasts but I think that is a problem I can solve :slight_smile:

@Bill: Thought that this was what I've done but I now think that I
know where my further problems were. Will try to get it running this
way too.

Regards,
Stefan