2010-05-18 76 views
1

我有一個搜索資源,用戶可以通過填寫表單並提交它,執行搜索,調用創建操作,保存搜索,調用顯示操作以及結果顯示。這一切都發生在默認的POST,並且一切正常。使用GET和POST表單提交和超鏈接

用戶可能希望將他的搜索保存在saved_search表中(我不使用搜索表作爲此目的,因爲此表存儲所有用於編譯統計信息的搜索並定期清除)。搜索保存後,可以通過單擊超鏈接重新運行,這是我開始遇到問題的地方。

我沒有辦法讓我的超鏈接運行搜索的創建操作,帶有POST請求和必要的數據。

然後我決定嘗試獲取表單提交和使用GET請求執行搜索的超鏈接,但我無法使用GET請求運行我的搜索創建操作,它似乎總是被路由到我的索引行動。

有人可以建議一個好的寧靜解決這個問題,請。

非常感謝

回答

2

我不太確定你要在這裏做什麼。如果你想有一個形式的GET請求提交,你可以覆蓋的的form_for助手的HTML屬性:

<% form_for blarg, :html => { :method => 'get' } %> 
blabla 
<% end %> 

的Rails也用「神奇」的參數支持的「僞裝」的HTTP方法的方法(稱爲「_method」),這使得Rails的行爲就好像它在該參數中看到了HTTP方法一樣。

如果您發送表單爲「get」,則必須確保沒有設置此類參數。如果你想讓一個超鏈接發送一個「POST」,調整這將是方式(瀏覽器不會發送一個真正的POST點擊鏈接)

1

喬恩, 如果我的理解沒錯,如果搜索已經保存,你可以只讓上保存搜索的資源得到像你做的第一時間,使用show動作顯示結果。

無論如何,如果你還想用鏈接做一個帖子,輔助方法link_to會爲你做。檢查出來: http://www.51773.com/tools/api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#M001597

用a:method =>:post選項它會創建一個隱藏表單併發布你的數據。

希望它有幫助。