2011-02-09 20 views
14

Tengo un archivo adjunto de recursos anidados y deseo crear un link_to para destruir/eliminar el archivo adjunto. Esto es lo que tengo, pero está publicando como un GET versus un PUT:Rails link_to destroy an nested resource?

<%= 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" %> 

Ideas? ¡Gracias!

Respuesta

6

Debería poder usar lo siguiente por sí mismo (eliminar la parte: acción => 'destruir'). Además, la solicitud debe ser una solicitud DELETE, no una petición 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

Gracias enhorabuena, pero acabo de comprobar los registros todavía está haciendo un GET – AnApprentice

+1

Eso es extraño. ¿Intentó voltear: método y: confirmar alrededor? ¿Qué registro aparece como una solicitud GET? ¿Ves un parámetro llamado _method en la llamada? –

+0

@Pan Thomakos, Sí, ¿cuál es la diferencia entre tener los argumentos en una matriz, como en la respuesta de Gerry, vs tenerlos en una lista de argumentos crudos, separados por comas como en esta respuesta? – ahnbizcad

13

Trate

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

Cómo funciona?

+2

Esto funcionó muy bien para mí, ¿puedes explicar por qué? ¿Por qué los corchetes en lugar de foo_path (parent_of_foo, foo)? –

+1

@TJSherrill los corchetes son una matriz de los registros anidados, que luego "procesa" Rails para calcular una ruta para todos los registros anidados dados (según sus rutas). En este caso, el primer elemento de la matriz es un Proyecto, el segundo es un Subproceso y el tercero es un Adjunto. Rails "adivina" que un archivo adjunto pertenece a un hilo que pertenece a un proyecto, calcula una ruta con estos registros anidados: 'project', luego' thread', luego 'attachment', que conduce al helper:' project_thread_attachment_path' – MrYoshiji