Accessing Member Object Methods


#1

Hello,

 I am hoping one of you Rails gurus can help a poor newb.

 I have a User model and a Contact model. The user Model

has_one :contact. I would like to use the users/new view to create a
new user as well as the related contact. However I can’t figure out
how to add the appropriate text_fields to the form to about info for
the related contact. Can anyone point me in the right direction?

Thanks!


#2

At your controller:

class UsersController < ApplicationController

def new
    @user = User.new
    @contact = @user.build_contact
end

def create
    @user = User.new( params[:user] )
    @contact = @user.build_contact( params[:contact] )
    if @user.valid? and @contact.valid?
        @user.save
        @contact.save
        respond_to do |format|
            format.html do
                flash[:notice] = "User saved"
                redirect_to users_path
            end
        end
    else
        render :action => 'new'
    end
end

end

At your new.html.erb

<% form_for @user do |f| %>

Login: <%= f.text_field :login %> <br/>
Email: <%= f.text_field :email %> <br/>

<% fields_for :contact do |g| %>
   Name: <%= text_field :email %>
   Address: <%= text_area :address %>
<% end %>

<% end %>

Maurício Linhares
http://alinhavado.wordpress.com/ (pt-br) | http://blog.codevader.com/
(en)


#3

On Dec 20, 11:50 pm, “Maurício Linhares” removed_email_address@domain.invalid
wrote:
[…]

<% end %>

Um, those last two should be g.text_field .

<% end %>

See
http://www.stephenchu.com/2008/03/boost-your-controller-paramsfu.html
for an excellent series of blog posts detailing this and other similar
tricks.

Best,

Marnen Laibow-Koser
removed_email_address@domain.invalid
http://www.marnen.org