2010-08-12 23 views
1

我正在尋找關於如何在不使用任何jQuery或rails插件的情況下在Rails應用程序中使用過濾器創建可排序表的教程或文檔。Ruby on Rails應用程序中的可排序表上的jQuery ajax過濾器

我想使用jQuery作爲JavaScript庫,而不是原型。

我在互聯網上發現的所有東西都是使用一個或另一個jQuery插件。

+0

您的消息令人困惑。 jQuery是否可以接受?如果是這樣,[DataTables插件](http://www.datatables.net/)很好。搜索過濾即時結果,列可排序,結果以客戶端分頁。它降級到一個普通的HTML表格。 – 2010-08-17 03:35:35

+0

嗨對不起,不太清楚。 JQuery是可以接受的,但我想避免使用JQuery插件。我已經成功地嘗試過jQGrid,但是我想要的是如何從頭開始做到這一點,與RoR。所以,我正在尋找的是一個純粹的RoR + jQuery實現。 – rangalo 2010-08-17 11:49:53

+0

我有點好奇,爲什麼你反對使用jQuery插件,如果它滿足您的需求。這是一個有趣的方面項目,你想建立一個練習? – 2010-08-20 19:01:30

回答

3

如果您使用Rails 2.3.x,searchlogic gem可能會有所斬獲。

一個好的入門教程是來自railscasts的Ryan Bates's tutorial on searchlogic

Thenm您應該閱讀this tutorial (ordering, searching and pagination with searchlogic)。還可以看看searchlogic_example源代碼(其中有3個示例:無AJAX,使用Rails助手的AJAX,使用jQuery的AJAX)。

+0

嗨, searchLogic似乎對我很有前途,不幸的是這些例子不起作用。看起來他們已經過時了。我也沒有找到任何最近的使用jQuery的searchlogic的例子。你能建議一些嗎? – rangalo 2010-08-29 14:27:39

0

您需要創建一個服務器端調用(GET)來提供表的一部分。它需要了解(1)請求的排序順序(2)頁面和頁面大小。你可以完成這將是一個index方法,查找參數和類似will_paginate(雖然有很多插件來幫助這個)。

在客戶端,使用jQuery,您只需處理用戶可能產生的所有點擊。例如,如果他們可以通過單擊列標籤進行排序,請將點擊處理程序附加到該標籤並對數據進行新的服務器請求。你可以編寫一個單一的Javascript方法來做到這一點,但你需要弄清楚你是如何表示頁面編號,排序等在JavaScriptland。

實施「過濾器」只是對此的擴展。我不確切知道UI如何工作,但它是服務器端調用的另一個輸入。

瑞安貝茨有幾個railscasts這將有助於這方面的所有方面,但我不知道一個結合了一切。

只要它一步步的時間...

+0

ndp在這裏給出了正確的方向。 「排序」對我來說很清楚,點擊表格列標題,可能是字母排序,但它也取決於表格中的數據。 「ajax過濾器」含糊不清。這些關鍵字/標籤是否必須出現在表格數據中?如果是這樣,那麼將這些字符串發送到服務器,在Rails控制器操作中解析它們,然後執行查詢。 Rails控制器操作可以渲染一個局部的,可能通過實例變量循環結果數組。你的控制器可以通過這個實例變量將查詢結果傳遞給partial。 – 2010-08-19 03:48:20

+0

不幸的是,一旦你在多個頁面,排序幾乎總是需要去服務器(準確)。雖然這不是瘋狂的實施,但它需要時間和關心。 推回需求也是合理的:真正需要分類的是什麼?是否有超過一頁的結果有價值?用戶試圖找到什麼?等等。我已經在我的職業生涯中無數次地實現了這個完整的列表組件,但是認爲它只是兩個案例中的正確界面......只是一個想法。 – ndp 2010-08-22 04:15:07