2009-05-03 22 views
0

在Rails中使用restful資源時,我希望能夠將鏈接插入到我的Flash哈希中,用戶可以單擊該鏈接銷燬相關對象。唯一的問題似乎是我無法使生成的鏈接與RESTful控制器一起工作!使用HTTP動詞在控制器中生成鏈接

首先我想

link_to "Change your reservation", reservation_path(@existing_reservation), :method => :delete 

這並不起作用,因爲的link_to是一個的ActionView helper方法,在控制器

下一個發現是url_for

url_for :controller => 'reservations', :actions => 'destroy', :method => :delete 

這花了我不可用回到演出行動。我試過了我能找到的兩個組合。 。 。但我似乎無法在我的控制器中創建一個鏈接,該鏈接將在刪除方法中滑入!我生成的每個操作都會生成一個正常鏈接(GET),它調用show方法。

任何想法?

回答

1

ApplicationController.helpers.link_to將允許您使用輔助方法的控制器,雖然我不知道這是嚴格按照MVC。儘管偶爾我發現了一個需要,即撥打number_to_currency

當您在該特定幫助程序中使用:delete選項時會出現另一個問題。它會失敗。快速瀏覽源代碼後,我無法真正看到立即修復。首先,如果可能的話,我建議你將刪除鏈接放在該頁面的其他地方。如果你真的需要,你可以在視圖中修改flash。

I.e.在控制器設置閃光燈:

flash[:notice] = "Flash message with a DELETE LINK in it" 

然後在視圖中修改Flash顯示它之前:

<%= flash[:notice].gsub(/DELETE LINK/, link_to("delete", resource_path, :method => :delete)) %> 

你可能會想只是使到自己的幫手。如果你不喜歡gsub-ing這樣的文字,我相信你可以找到另一種方式,如何將鏈接追加到閃光燈?

希望對您有所幫助:)

0

而不是使用路徑,嘗試僅傳遞對象本身,例如,

link_to "Change your reservation", @existing_reservation, :method => :delete 
+0

無法在控制器中使用「link_to」方法。 。 。其唯一的意見。 – BushyMark 2009-05-03 11:42:06

+0

是的,你說得對。對不起,我沒有仔細閱讀你的消息。由於沒有對視圖中的鏈接進行硬編碼,所以我非常難以理解這一點。 – Schrockwell 2009-05-03 16:28:37