New View Example With Child Object?


Could somebody point me to some example code? This must be simple, I
just can’t find any examples. I need a new view (new.rhtml) to include
the creation of a child object. I have a table for servers (Servers)
and a table for IP Addresses (Ips).

has_many :ips
belongs_to :server

In my new.rhtml I want the IP entered to become a record in the Ips
table. The Ips table is very simple. It has two rows, id and
server_id. Where would I look for example code for new.rhtml and

Thanks for the help!

  • Don


Any suggestions here? Thanks.

  • Don


On 1/16/06, Don S. removed_email_address@domain.invalid wrote:

Any suggestions here? Thanks.

  • Don

Here’s an example that handles a one-to-one relationship between
Since you need multiple IPs per server, you’ll want to work out some
way to address that in the view. One way would be with Ajax and/or
RJS templates; another would be to let the user enter a
comma-separated list of IPs… yet another would be to ask how many IPs
there will be up front, before showing the ‘new’ template, and build
that many form entries via a partial.

model :server
model :ip

def new
@server =[:server])
@ip =[:ip])
@server.ips << @ip
if and
flash[:notice] = “All systems Go.”
redirect_to :action => ‘show’, :id => @server

#I’ve omitted various useful things like labels, help text, etc.
<%= start_form_tag :action => ‘new’ %>
<%= text_field ‘server’, ‘some_property’ %>
<%= select ‘server’, ‘something_else’, some_list_of_options %>
<%= text_field ‘ip’, ‘address’ %>
<%= submit_tag “Create Server” %>
<%= end_form_tag %>

Every input field value for ‘ip’ will be available in params[:ip] once
this form is posted, and every ‘server’ input field will be found in

Saving the parent object (@server) also saves any unsaved children, so
the new Server and Ip objects are both saved in one step.