2011-02-09 4 views
14

ネストされたリソースの添付ファイルがあり、添付ファイルを破棄または削除するためにlink_toを作成します。ここに私が持っているものがありますが、それはPUT対GETとして投稿しています: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、ええ、Gerryの答えのように、引数を配列に持つことと、この答えのようにコンマで区切られた引数のリストを生のままにすることの違いは何ですか? – 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、2番目はThread、3番目はAttachmentです。アタッチメントがプロジェクトに属するスレッドに属していて、これらのネストされたレコードでパスを計算していると推測しています: 'project'、' thread'、そして 'attachment'はヘルパーにつながります:' project_thread_attachment_path' – MrYoshiji

関連する問題