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). Server has_many :ips Ip 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 server_controller.rb? Thanks for the help! - Don
on 2006-01-14 00:43
on 2006-01-17 01:05
Any suggestions here? Thanks. - Don
on 2006-01-17 03:07
On 1/16/06, Don Stocks <firstname.lastname@example.org> wrote: > > Any suggestions here? Thanks. > > - Don > Here's an example that handles a one-to-one relationship between servers. 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. #server_controller.rb model :server model :ip def new @server = Server.new(params[:server]) @ip = Ip.new(params[:ip]) @server.ips << @ip if request.post? and @server.save flash[:notice] = "All systems Go." redirect_to :action => 'show', :id => @server end end #new.rhtml #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 params[:server]. Saving the parent object (@server) also saves any unsaved children, so the new Server and Ip objects are both saved in one step.