Forum: Ruby on Rails Restful delete is driving me nuts...

Announcement (2017-05-07): is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see and for other Rails- und Ruby-related community platforms.
jlf (Guest)
on 2009-03-02 15:46
(Received via mailing list)

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 ?
Conrad T. (Guest)
on 2009-03-02 17:36
(Received via mailing list)
On Mon, Mar 2, 2009 at 5:20 AM, jlf <removed_email_address@domain.invalid> 

> map.resources :announcements
>  Session ID: 95ccbfa93eef0bf8408147c7b6b9a287
> It works, but it is ugly.
> What did I do wrong ?
> Thanks
> Jean-Loup

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,

Alejandro Gonzalez (Guest)
on 2009-03-02 18:31
(Received via mailing list)
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.
This topic is locked and can not be replied to.