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.