2010-11-25 36 views
0

所以我在這方面做了幾次嘗試,但決定我需要社區關於最佳實踐的一些建議。這是我想要做的。在rails中保存javascript的狀態

我有我使用jQuery的切換顯示或隱藏多個視圖的多個元素。我想要做的是保存它們的狀態,以便它們在請求中持續存在。 (即如果用戶有panel1顯示,但panel2隱藏,當他們刷新時,他們仍然是這樣)

我在想每次用戶切換元素時,我都可以在會話中保存該元素的CSS顯示值。然後在每次頁面加載後,我可以使用jquery的.class選擇器來獲取所有具有say'toggle'類的元素並將其應用於這些元素。

這個想法聽起來很合理,但我不夠聰明。我不知道如何執行JavaScript,並解析Ruby代碼,除了爲該視圖調用ajax調用.js.erb。

我發揮與它周圍的幾個小時,沒有成功。有沒有人有任何建議讓我開始朝正確的方向發展?

回答

1

也許一個簡單的方法是使用cookie保存您切換的狀態。這可以通過jQuery/JavaScript來完成,並且完全消除了讓Rails擔心這一點的必要性。

+0

有時你這麼遠了,你忘了還有其他的孔兔子洞。這是一個更簡單的解決方案。謝謝! – brewster 2010-11-29 02:25:36

0

我認爲有兩種方法可以進行。

1)你提到的第一個,這是非常暫時的:保存信息到會話或者如果你想它的緩存

2)持續性:保存當前用戶的狀態數據庫,並在你的緩存快速訪問。

他們都需要你來處理,讓你的服務器知道發生了什麼一些Ajax請求。

我會使用一些jQuery的功能:單擊然後切換這將增加或刪除「隱藏」類(這將是一個單純的「顯示:無;」在你的CSS)。我會保持這些函數在客戶端(不使用任何js.erj或rjs)。

除了切換,我還會根據用戶點擊的面板中「隱藏」類的存在與否發送ajax請求。這隻會呈現:text =>'狀態保存'或'狀態未保存'。

在頁面加載時在第一時間,只需添加<%=「隱藏」如果panel1_show == TRUE%>對類的每個面板的。

希望這有助於,

+0

,因爲我不在乎它們是否在會話中持續存在,只是在多個頁面請求中,我使用cookie解決方案並保存自己完全不做任何ajax請求。 – brewster 2010-11-29 02:30:22