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?


Kind Regards,
Rajinder Y.

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,


Lazarus Lazaridis
www.arubystory.com http://www.arubystory.com|
iridakos (Lazarus Lazaridis) · GitHub |
@lazaru_s https://twitter.com/lazaru_s

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

On Fri, Apr 8, 2016 at 9:03 PM, Rajinder Y. [email protected]
wrote:

My delete like looks like this (added remote: true).
$(this).closest(‘tr’).fadeOut();
format.js { render layout: false }
end
end

What am I missing?


Kind Regards,
Rajinder Y.


Kind Regards,
Rajinder Y.

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() {

On Fri, Apr 8, 2016 at 9:25 PM, Rajinder Y. [email protected]
wrote:

see getting called as I added an alert alert box to check.
respond_to do |format|
Kind Regards,
Rajinder Y.


Kind Regards,
Rajinder Y.


Kind Regards,
Rajinder Y.