2010-07-26 84 views
3

我有一個搜索頁面可以找到候選人。 從這個頁面你可以點擊查看來找到更多關於應聘者的信息。 在候選人視圖上時,您可以點擊編輯或執行一些其他操作,這些操作也會將候選人視圖返回給您。Rails - 存儲搜索查詢/結果

我的問題是從候選人視圖我需要添加一個按鈕返回到搜索結果。 我原本以爲使用帶有歷史-1的JS按鈕,但因爲用戶可以在視圖內執行其他操作,所以這是行不通的。

我還是很新的軌道,所以不知道我的選擇......我想某種緩存的結果,然後可能是一個隱藏的字段,以跟蹤緩存的位置(不要認爲這是因爲保持隱藏價值的軌跡可以得到升技雜亂的最佳解決方案!)

謝謝,亞歷克斯

+0

謝謝大家的幫助!這些解決方案中的每一個我都會有所幫助。 – Alex 2010-07-26 18:50:44

回答

10

我可能會使用會話變量來存儲這些信息。

首先,確保您發佈到搜索頁面的表單是GET操作,這樣搜索細節就在您的查詢字符串中。然後在你的搜索行動,你可以抓住的請求的URL,並將其存儲在會話:

session[:search_results] = request.url 

現在,在您的結果來看,你可以做你的「返回搜索結果」這樣的:

link_to "Back to search results", session[:search_results] 
+0

我更喜歡這個,它只有一個缺點:它不會允許多個搜索會話...... – hurikhan77 2010-07-26 18:39:43

+1

順便說一句:我更喜歡「session [:last_query] = params」作爲後過濾器。它也可以保存發佈請求。請務必在重定向時不要這樣做,只在實際控制器要顯示結果時才存儲參數。 – hurikhan77 2010-07-26 18:44:44

2

可以包括在子頁面的查詢參數。例如:/foo/search?q=stuff顯示搜索結果。然後每個結果都有一個鏈接,如/foo/:id?q=stuff。並且在子頁面上,您將有可用的參數鏈接回主頁面。

此解決方案不使用任何服務器端狀態,這通常被認爲是構建Web應用程序的更好方法。這不僅意味着您的瀏覽器將按照預期行事,就書籤,多個選項卡等而言,而且還確保可以採用適當的緩存。此外,它降低了應用程序的複雜性,使其更易於調試和擴展。

1

您可以將搜索結果放入由用戶ID鍵入的「search_results」表中。然後,當用戶點擊該頁面時,始終從該表上的查詢加載。

2

您有幾個選項:

按照您的建議緩存結果。潛在的缺點是需要內存,並且如果添加新的有效記錄,則不會看到它們。您可以將緩存存儲在Session中或數據庫中(儘管在後一種情況下,您不會獲得太多收益)。

我建議只記得最後的搜索詞,無論是在會議或使用隱藏的領域。當您轉到搜索結果頁面時,最終會重新運行查詢,但是在正確編入索引的數據庫中,這應該不是什麼大問題。

祝你好運!

+2

不,不要嘗試在會話中緩存結果。真。別! – hurikhan77 2010-07-26 18:41:04

0

如果有人碰到此頁,你需要一個按鈕,返回到前一頁和仍顯示這些搜索結果(就像谷歌瀏覽器按鈕),只需使用:回.....

<%= link_to(image_tag("back.svg"), :back, :class => 'back_btn') %>