how to ajaxify?

Hi all.

  I'm doing my own blog-like site, so I've an Post controller and an Comments controller and I want to ajaxify my comments form. So, I've did the following:

[comments_controller.rb] class CommentsController < ResourceController::Base   belongs_to :post, :article, :photo

  create do     flash "Comment posted successfuly"     wants.html { redirect_to :back }     wants.js { render :layout => false }   end end [/comments_controller.rb]

[create.js.rjs] page.replace_html("comments", :partial => "comment", :collection => @post.comments) [/create.js.rjs]

[views/posts/show.html.erb] <%= render :partial => "post", :object => @post %>

<h3>Comments</h3>

<div id="comments">     <%= render :partial => "comments/comment", :collection => @post.comments %> </div>

<% remote_form_for([@post,Comment.new], :update => "new_comment") do |f| %>   <%= render :partial => "comments/form", :locals => { :f => f } %>   <p>     <%= submit_tag "Create" %>   </p> <% end %> [/views/posts/show.html.erb]

  Please, also note that I'm using resource_controller plugin.

  When I write down my comment, comments_partial is updated and my new comment appears, but I also got the following:

[output] Element.update("comments", "\u003Ca href=\"http://presto.stellar.com.br\"\u003Edavi\u003C/a\u003E said, in Post Fouth post at\nSun Jun 15 12:04:33 -0300 2008:\u003Cbr/\u003E\nCommenting! I'm enjoying Rails!!! Finaly!! =D\n\u003Cbr/\u003E\u003Cbr/\u003E\u003Ca href=\"http://presto.stellar.com.br\"\u003Edavi\u003C/a\u003E said, in Post Fouth post at\nSun Jun 15 12:05:25 -0300 2008:\u003Cbr/\u003E\nI've learned how to restart Passenger... =)\n\u003Cbr/\u003E\u003Cbr/\u003E\u003Ca href=\"http://my.coolsite.com\"\u003Eauthor\u003C/a\u003E said, in Post Fouth post at\nMon Jun 16 00:50:43 -0300 2008:\u003Cbr/\u003E\nmy comment\n\u003Cbr/\u003E\u003Cbr/\u003E"); [/output]

  and my comments' form desapair.

  What am I missing here?

  Please, sorry for my very bad English.      Best regards,

Is that what is inserted into your comments div? The thing here is that ajax in rails can be used in one of two ways. The first is that you give remote_form_for, link_to_remote etc... a dom id via the :update option and then response from your action replaces the contents of that page element. In this case you action should just render an html fragment. The second way is your action renders javascript, and the javascript on the page executes it when it comes back (rjs is one way of generating javascript. Here you're mixing the two: you're specifying :update but then you're rendering rjs. Pick one or the other.

Fred

> [output] > Element.update("comments", "\u003Ca > href=\"http://presto.stellar.com.br\"\u003Edavi\u003C/a\u003E said, in > Post Fouth post at\nSun Jun 15 12:04:33 -0300 > 2008:\u003Cbr/\u003E\nCommenting! I'm enjoying Rails!!! Finaly!! > =D\n\u003Cbr/\u003E\u003Cbr/\u003E\u003Ca > href=\"http://presto.stellar.com.br\"\u003Edavi\u003C/a\u003E said, in > Post Fouth post at\nSun Jun 15 12:05:25 -0300 2008:\u003Cbr/\u003E\nI've > learned how to restart Passenger... > =)\n\u003Cbr/\u003E\u003Cbr/\u003E\u003Ca > href=\"http://my.coolsite.com\"\u003Eauthor\u003C/a\u003E said, in Post > Fouth post at\nMon Jun 16 00:50:43 -0300 2008:\u003Cbr/\u003E\nmy > comment\n\u003Cbr/\u003E\u003Cbr/\u003E"); > [/output]

Is that what is inserted into your comments div?

  Yes.

The thing here is that ajax in rails can be used in one of two ways. The first is that you give remote_form_for, link_to_remote etc... a dom id via the :update option and then response from your action replaces the contents of that page element. In this case you action should just render an html fragment. The second way is your action renders javascript, and the javascript on the page executes it when it comes back (rjs is one way of generating javascript. Here you're mixing the two: you're specifying :update but then you're rendering rjs. Pick one or the other.

  I've droped down :update and all is working fine now.

  Thank you very much, Fred.