Form for Object Creation

Can someone explain what is the correct way with Rails 1.2 to use a form to create an object.

I know start_form_tag is changed to form_tag but what about form_for?

I am trying to map a field on to field in the object which is created by a method call,

so something like this def password=(pass) and so on. However, this seems to work fine for me in some cases but not in others.



Both take blocks now. When using form_for, supply the block with a
symbol denoting the corresponding object, then you don't have to
restate it everyplace:

<% form_for :people do |f| %>    <p>      name      <%= f.text_field :name %>    </p>    <p>      address      <%= f.text_field :address %>    </p> <% end %>

In particular, this is great when there are multiple forms on the
same page. You specify:

<% form_for :people %>    # stuff here <% end %>

<% form_for :addresses %>    #stuff here <% end %>

Does this help?

Ok, I have rewritten my form code to follow this but its not solving my core problem.

Maybe its just me but rails seems a bit of a mess when it comes to form code.

I have one app that runs against 1.1.6. I have a form with the following code:

<%= form.file_field(“jar_file”) %>

In my model I have:

def jar_file=(jar_field) #stuff end

This works fine. Howevern in a new app running on rails 1.2.1 I have the following code:

<%= f.password_field(“password”) %>

with this in my model:

def password=(pass) #stuff end

This fails with the error:

undefined method `password' for #<User:0x377e560>

Is there a 'correct' approach for this. Rails seems to allow me to set up forms in
a number of ways but I can find nothing that says this is the right way to do it.