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 ?

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.