Forum: Ruby on Rails Form for Object Creation

Announcement (2017-05-07): is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see and for other Rails- und Ruby-related community platforms.
Keith D. (Guest)
on 2007-02-13 01:33
(Received via mailing list)
Can someone explain what is the correct way with Rails 1.2 to use a form
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
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.


Steve R. (Guest)
on 2007-02-13 09:04
(Received via mailing list)
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| %>
     <%= f.text_field :name %>
     <%= f.text_field :address %>
<% 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?
Keith D. (Guest)
on 2007-02-13 17:52
(Received via mailing list)
Ok, I have rewritten my form code to follow this but its not solving my

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

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

<%= form.file_field("jar_file") %>

In my model I have:

def jar_file=(jar_field)

This works fine. Howevern in a new app running on rails 1.2.1 I have the
following code:
<%= f.password_field("password") %></p>

with this in my model:

 def password=(pass)

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.

This topic is locked and can not be replied to.