Replacing table row with form


#1

I need a way to replace a table row with a form to edit it’s values –
kind of like edit-in-place, only that I need a custom form (check boxes,
select lists, text fields, etc). My table is generated with a partial of
a model.

The row should have a button/link to enable to go in and out of edit
mode, and this should be done asynchronously. Here’s what I came up with
so far:

view

<%= render :partial => 'person', :collection => @people %>

partial

<% @person = person -%>
<% @row_id = “person_#{person.id}” %>

<%= link_to_remote 'edit', :url => { :action => 'edit_row'} %> <%= person.name %> <%= person.age %>

I need help with the controller and how to replace the specific row
(with id=“person_”) with a form. Should the form be hidden in the
partial and controlled by a boolean passed to it (if true, show form >
else show the normal view)? meaning:

<% if edit_mode -%>
<% form_for :person do |f| -%>

<%= f.text_field :name %>
<%= f.text_field :age %>
<%= f.submit ‘go’ %>
<% end -%>
<% else -%> <%= link_to_remote 'edit', :url => { :action => 'edit_row'} %> <%= person.name %> <%= person.age %> <% end -%>

I can’t be the only one who’s trying to do this, so I’d really
appreciate any thoughts, insights and such. Thanks in advance!