Forum: Ruby on Rails replacing table row with form

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
7db3b1680807d393d40260591b4ae5e0?d=identicon&s=25 sa 125 (sa125)
on 2009-01-07 14:44
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

<div id="people_table">
  <table>
    <%= render :partial => 'person', :collection => @people %>
  </table>
</div>

# partial

<% @person = person -%>
<% @row_id = "person_#{person.id}" %>
<tr id="person_<%= person.id %>">
  <td><%= link_to_remote 'edit', :url => { :action => 'edit_row'}
%></td>
  <td><%= person.name  %></td>
  <td><%= person.age  %></td>
</tr>

I need help with the controller and how to replace the specific row
(with id="person_<nn>") 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| -%>
    <td><%= f.text_field :name %></td>
    <td><%= f.text_field :age %></td>
    <td><%= f.submit 'go' %></td>
  <% end -%>
<% else -%>
  <td><%= link_to_remote 'edit', :url => { :action => 'edit_row'}
%></td>
  <td><%= person.name  %></td>
  <td><%= person.age  %></td>
<% 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!
This topic is locked and can not be replied to.