Rails with Ajax

Hi all, looking into ajax support on rails but I can't seem to get sometime simple to work.

I basically started off with a simple scaffold app, seeded the database with some dummy data and trying to get delete working as a ajax request.

rails g scaffold pony name:string profession:string

My delete like looks like this (added remote: true).

<%= link_to 'Destroy', pony, method: :delete, remote: true, class: 'delete_pony' %>

I created a new file: app/views/ponies/destroy.js.erb which I don't see getting called as I added an alert alert box to check.

$('delete_pony').ajaxSuccess( function() {    alert('deleting...');    $(this).closest('tr').fadeOut(); });

My controller method looks like this

  def destroy     @pony.destroy     respond_to do |format|       format.html { redirect_to ponies_url, notice: 'Pony was successfully destroyed.' }       format.json { head :no_content }       format.js { render layout: false }     end   end

What am I missing?

Hi,

If you take a look at your server’s console you will see the error. From what I see, the second argument of the link helper expects a url but you pass an object (I suppose this variable exists otherwise the view with the link wouldn’t render).

This should work:

<%= link_to ‘Destroy’, pony_path(pony), method: :delete, remote: true, class: ‘delete_pony’ %>

``

Thanks,

OK I just noticed inside my jquery I was missing the dot '.' before the class name!

Hi Lazaruz,

in the link_to call, when you only provide a variable, by rails conventions the object's id value will be used and the show method will be called.

fyi there were actually two correction I had to make in the javascript code, in addition to what I mentioned earlier, I also has to change jQuery method "ajaxSuccess" to use the "on" method like this.

$('.delete_pony').on( 'ajax:success', function() {