2011-02-09 3 views
14

У меня есть вложенные вложения ресурсов, и я хочу создать link_to для уничтожения/удаления вложения. Вот что у меня есть, но он публикуется как GET по сравнению с PUT:Rails link_to уничтожить вложенный ресурс?

<%= link_to "Delete Attachment", project_thread_attachment_path(@attachment.thread.project.id, @attachment.thread.id, @attachment.id), :confirm => "Are you sure you want to delete this attachment?", :method => :delete, :action => "destroy" %> 

Идеи? Благодаря!

ответ

6

Вы должны иметь возможность использовать следующее самостоятельно (удалите часть: action => 'destroy'). Кроме того, запрос должен быть DELETE запрос, не запрос PUT:

 
<%= link_to "Delete Attachment", project_thread_attachment_path(@attachment.thread.project.id, @attachment.thread.id, @attachment.id), :confirm => "Are you sure you want to delete this attachment?", :method => :delete %> 
+0

Прохладный спасибо, но я только что проверил журналы, они все еще делают GET – AnApprentice

+1

Это странно. Вы попробовали щелкнуть: метод и: подтвердить? Какой журнал отображается в виде запроса GET? Вы видите параметр с именем _method в вызове? –

+0

@Pan Thomakos, Да, в чем разница между аргументами в массиве, как и в ответе Джерри, и с их наличием в списке разделенных запятыми аргументов, подобных этому ответу? – ahnbizcad

13

Попробуйте

link_to "Delete Attachment", [@attachment.thread.project,@attachment.thread,@attachment], :confirm => "Are you sure?", :method => :delete 

ли работа?

+2

Это отлично поработало для меня, вы можете объяснить, почему? Почему скобки вместо foo_path (parent_of_foo, foo)? –

+1

@TJSherrill скобки - это массив вложенных записей, который затем обрабатывается Rails для вычисления пути для всех данных вложенных записей (в соответствии с вашими маршрутами). В этом случае первым элементом массива является Project, второй - Thread и третий Attachment. Rails «угадывает», что приложение принадлежит потоку, принадлежащему Проекту, вычисляя путь с этими вложенными записями: 'project', затем' thread', затем 'attachment', что приводит к помощнику:' project_thread_attachment_path' – MrYoshiji

Смежные вопросы