Filters defined in :before_filter does not seem to get fired when ajax requests are made to the meth

hi, guys

My rails 3 app is working fine except for resource deletion which uses
ajax.
The resource is “part”.

When the user clicks on the “delete part” link, a confirmation pop up
box will appear.
Upon clicked on “ok”, an ajax request is fired to the ‘delete’ method
in my controller.

In the “parts” controller, I have a before_filter which points to a
method
which checks if the current user has authorisation to delete the given
part entry.

This method works fine for my other methods specified in the
before_filter but doesn’t for the deletion method.

------------------ extract from: app/view/parts/index.html.erb (start)

<%=
link_to ‘Delete’,
part_path(part.id),
#‘data-method’ => ‘delete’,
:method => :delete,
‘data-confirm’ => ‘Are you sure?’,
‘data-remote’ => ‘true’,
‘class’ => ‘delete_part’
%>

------------------ extract from: app/view/parts/index.html.erb (end)

Javascript framework: Jquery
Rails version 3.0.9
Javascript/rails gem: ‘jquery-rails’ version 1.0.14

I noticed that the ajax call somehow bypasses the before filter.
Why is this so and is there any way to fix this?

Thank you

On Sep 28, 9:00pm, “K.M.” [email protected] wrote:

hi, guys

My rails 3 app is working fine except for resource deletion which uses
ajax.
The resource is “part”.

When the user clicks on the “delete part” link, a confirmation pop up
box will appear.I’ve done some extra checks and observed that with Javascript
turned off on my web browsers (chrome and firefox),
the destroy method does not get called when I click on it.

in app/views/parts/index.html.erb, i observed that I was using
“:method => delete”
to generate the deletion link.
I have changed it to use ‘data-method’=> :delete but it still does not
work :frowning:

                            link_to 'Delete',
                                    part_path(part.id),
                                   :method => :delete,
                                    'data-confirm' => 'Are you

sure?',
‘data-remote’ => ‘true’,
‘class’ => ‘delete_part’

                             to

                            link_to 'Delete',
                                    part_path(part.id),
                                   'data-method' => :delete,
                                    'data-confirm' => 'Are you

sure?',
‘data-remote’ => ‘true’,
‘class’ => ‘delete_part’

I’ve done some extra checks and observed that with Javascript turned
off on my web browsers (chrome and firefox),
the destroy method does not get called when I click on it.

in app/views/parts/index.html.erb, i observed that I was using
“:method => delete”
to generate the deletion link.
I have changed it to use ‘data-method’=> :delete but it still does not
work :frowning:

                            link_to 'Delete',
                                    part_path(part.id),
                                   :method => :delete,
                                    'data-confirm' => 'Are you

sure?’,
‘data-remote’ => ‘true’,
‘class’ => ‘delete_part’

                             to

                            link_to 'Delete',
                                    part_path(part.id),
                                   'data-method' => :delete,
                                    'data-confirm' => 'Are you

sure?’,
‘data-remote’ => ‘true’,
‘class’ => ‘delete_part’

My bad… I put “delete” in the :before_filter’s list of methods when
the method name is “destroy”.

Silly gotcha.

Sorry gents. Hope someone facing roughly the same issue would benefit
from this little lesson I learnt.

Cheers :slight_smile: