Forum: Ruby on Rails Inline list editing with RJS: best practices

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.
480cd6d5c2d7ff8d7f83a67137eb794d?d=identicon&s=25 Zack Chandler (Guest)
on 2006-02-14 18:59
(Received via mailing list)
I wanted to get the community opinion on the best way to use partials
and
inline list (<li>) editing.
I have a very common scenario where a list is rendered:

--- index.rhtml ---
<ul>
  <%= render :partial => 'item', @collection => @items %>
</ul>

--- _item.rhtml (simplified) ---
<li id="item_<%= item.id %>">
  <div id="show_item_<%= item.id %>">
    <%= h item.name %>
    <%= link_to 'edit', . %>
  </div>
  <div id="edit_item_<%= item.id %>" style="display: none"></div>
</li>

I am using RJS templates to populate the 'edit_item' div on an ajax call
from the 'edit' link.  All very straightforward stuff.  The problem is
on
update in my RJS template I want to render the partial again to update
the
list item like this:

--- update.rjs ---
page.replace_html "item_" + item.id.to_s, :partial => 'item'

The problem of course is that then you have nested <li> elements as the
inner text is replaced, not the entire tag.  Has anyone else encountered
this and come up with an elegant solution.  I suppose I could strip the
outer <li> elements from the partial only in the RJS call like this:

page.replace_html "item_" + item.id.to_s,
my_method_that_strips_the_outer_li( render :partial => 'item')

But I have a feeling that there is a much more elegant way to do this.
Ideas?

Thanks,
Zack
2ccb2f7699267d258faaafce4ee997df?d=identicon&s=25 Cody Fauser (Guest)
on 2006-02-14 20:16
(Received via mailing list)
Zack,

Support was just added for 'replace'.  Take a look at
http://dev.rubyonrails.org/changeset/3590
and http://dev.rubyonrails.org/changeset/3579, which give more detail.
I haven't actually tried it yet, but it may solve your problem. Don't
forget to do rake update_javascripts.

On 2/14/06, Zack Chandler <zackchandler@drainpatrol.com> wrote:
> <li id="item_<%= item.id %>">
> list item like this:
> my_method_that_strips_the_outer_li( render :partial => 'item')
> Rails mailing list
> Rails@lists.rubyonrails.org
> http://lists.rubyonrails.org/mailman/listinfo/rails
>


--
Cody Fauser
http://www.codyfauser.com
480cd6d5c2d7ff8d7f83a67137eb794d?d=identicon&s=25 Zack Chandler (Guest)
on 2006-02-14 20:46
(Received via mailing list)
Thanks Cody!
That looks like just what I was looking for!

Zack
This topic is locked and can not be replied to.