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|
https://github.com/iridakos |
@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.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs