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. Thanks, Keith
on 2007-02-13 00:33
on 2007-02-13 08:04
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?
on 2007-02-13 16:52
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") %></p> 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. Keith