Inline list editing with RJS: best practices

I wanted to get the community opinion on the best way to use partials
and
inline list (

  • ) editing.
    I have a very common scenario where a list is rendered:

    — index.rhtml —

      <%= render :partial => 'item', @collection => @items %>

    — _item.rhtml (simplified) —

  • <%= h item.name %> <%= link_to 'edit', . %>
  • 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

  • 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
  • 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

  • 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 C. [email protected] wrote:

  • list item like this: my_method_that_strips_the_outer_li( render :partial => 'item') Rails mailing list [email protected] http://lists.rubyonrails.org/mailman/listinfo/rails

  • Cody F.
    http://www.codyfauser.com

    Thanks Cody!
    That looks like just what I was looking for!

    Zack