2010-08-12 43 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