Forum: Ruby on Rails Parent Child together in input form

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Harm de Laat (Guest)
on 2005-12-16 15:05
(Received via mailing list)
Hi all,

I understand how rails is supposed to work when dealing with one entity
input form.

However, when I have a relation between two objects (composition):

Customer(1)  --------> (1)Address

How can you create a inputform where both the properties of a Customer
and
Address can be filled in?

Regards,

Harm de Laat
Alain R. (Guest)
on 2005-12-16 15:08
Harm

Check the thread
    "managing belongs_to fields in a form"

I posted this very question a few hours ago.

Alain
Alain R. (Guest)
on 2005-12-16 15:14
Harm,

Sorry, I misread your post. Your question is different.

I would  simply input the 2 objects independantly in the same form

      customer = Customer.new
      address = Address.new

, build them separately from their parts, link the address to the
customer and finally save them both.



Alain
Harm de Laat (Guest)
on 2005-12-16 15:44
(Received via mailing list)
Thx for the reply!

Do you maybe have an example of this?

How do I do this in de RHTML file?

In JSP i might be able to do something like:

<input type="text" name="<%= <c:out value="${customer.address.street
}"/></input>

What is the equivalent of the above in RHTML?

Regards,

Harm.
Alain R. (Guest)
on 2005-12-16 15:59
Harn,

You can start from the default scaffold code, and simply extend it:
(caution: untested advice, suggested by a newbie !!)

  def new
    @customer = Customer.new
    @address  = Address.new
  end

  def create
    @address = Address.new(params[:address])
    @customer = Customer.new(params[:customer])
    @customer.address = @address

    if @address.save && @customer.save
      flash[:notice] = 'Member was successfully created.'
      redirect_to :action => 'list'
    else
      render :action => 'new'
    end
  end


For the rhtml, update the view (the _form.rhtml partial) accordingly.


Alain
This topic is locked and can not be replied to.