Restful delete is driving me nuts


In my project, all delete links aren’t working. They keep acting as
“show” action.

Here is an example for the announcements controller.

In routes.rb :

map.resources :announcements

In my index view, I have the standard
<%= link_to ‘Destroy’, announcement, :confirm => ‘Are you
sure?’, :method => :delete %>

But when ever I click on the link, controller gets a “get” message,
not a “delete”.

Processing AnnouncementsController#show (for at 2009-03-02
14:01:23) [GET]
Session ID: 95ccbfa93eef0bf8408147c7b6b9a287
Parameters: {“action”=>“show”, “id”=>“2”,
“controller”=>“announcements”, “locale”=>“en”}

In order to get the delete working I had to create a new named route.

map.annoucements_delete “announcements/:id/
delete”, :controller=>“announcements”, :action => “destroy”

<%= link_to ‘delete’, annoucements_delete_path(announcement), :confirm
=> ‘Are you sure?’, :method => :delete %>

It works, but it is ugly.

What did I do wrong ?

On Mon, Mar 2, 2009 at 5:20 AM, jlf [email protected] wrote:

map.resources :announcements
Session ID: 95ccbfa93eef0bf8408147c7b6b9a287

It works, but it is ugly.

What did I do wrong ?

In my very very small example, the following works for me:

<%= link_to “delete”, announcement*_path(announcement), :confirm
“Are you sure?”, :method => :delete

Good luck,


Do you have javascript enabled in the browser you’re testing the
delete action with?

<%= link_to ‘Destroy’, announcement, :method => :delete %> produces an
anchor tag to the show action but with a bunch of javascript code to
emulate the DELETE http method.