2011-02-09 6 views
14

중첩 된 리소스 첨부 파일이 있고 첨부 파일을 삭제/삭제하려면 link_to을 만들고 싶습니다. 여기 제가 가지고있는 것이지만, PUT 대 GET으로 게시하고 있습니다 :레일즈 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'부분).

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

멋진 감사하지만 방금 로그를 확인한 결과가 나타납니다. – AnApprentice

+1

이상합니다. 뒤집어 봤습니까? 방법 : 주변 확인 : 어떤 로그가 GET 요청으로 나타 납니까? 통화 중에 _method라는 매개 변수가 표시됩니까? –

+0

@Pan Thomakos, 예, Gerry의 대답과 같이 배열에 인수를 갖는 것의 차이점은 무엇입니까?이 대답과 같이 쉼표로 구분 된 원시 인수 목록에 포함되어 있습니까? – ahnbizcad

13

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

그것이 작동합니까보십시오 : 또한, 요청은 삭제 요청이 아닌 PUT 요청해야 하는가?

+2

이것은 나를 위해 훌륭했습니다. 이유를 설명해 주시겠습니까? foo_path (parent_of_foo, foo) 대신 대괄호를 사용하는 이유는 무엇입니까? –

+1

@TJSherrill 대괄호는 중첩 된 레코드의 배열이며, Rails가 경로에 따라 지정된 중첩 레코드의 경로를 계산하기 위해 "처리"됩니다. 이 경우 배열의 첫 번째 요소는 프로젝트이고 두 번째는 스레드이고 Attachment는 세 번째 요소입니다. Rails는 첨부 파일이 프로젝트에 속한 쓰레드에 속한다는 것을 "추측"하고,이 중첩 된 레코드로 경로를 계산합니다 :'project','thread','attachment', 도우미 :'project_thread_attachment_path' – MrYoshiji

관련 문제