Rails AJAX过滤让我完全难过

时间:2012-07-06 07:03:33

标签: ruby-on-rails ajax filter

我发现自己对如何解决问题感到困惑并不常见,但对于这一点,老实说我没有任何线索。

我正在构建一个包含许多项目的网站,在主页上,我希望人们可以通过打开和关闭过滤器来浏览这些项目。例如,过滤器类型之一是GENRE。用户可以看到一个类型列表,当单击它们时,过滤掉与该类型匹配的所有项目。此外,如果您点击两种不同的流派,您将只看到与这些流派相匹配的项目。

问题是,这一切都需要通过AJAX完成,而且当事情开始让我感到困惑的时候。如何进行ajax调用,不仅会设置新的过滤器,还会记住当前的过滤器?加载页面后,我可以执行类似

的操作
<a href="/api/projects?genre=first_genre">First Genre</a>
<a href="/api/projects?genre=second_genre">Second Genre</a>

但问题是,当我一次点击两个时,我最终只会按单一类型进行过滤。或许,我可以使用JS更新所有链接以包含已经选择的类型数组,每次点击一个,但这看起来非常草率。然后,每个链接都会有类似的内容:

<a href="/api/projects/?genres[]=first_second&genres[]=second_genre etc etc...">First Genre</a>

我的另一个想法是将所有当前过滤器存储在一个cookie中,然后当点击一个链接时,将该新过滤器添加到cookie中的过滤器列表中,但同样,这似乎很草率。

重点是,我不知道这样做的正确方法是什么,而且我感觉有点迷失。对那些以前做过这样的事情的人来说,帮助!!

1 个答案:

答案 0 :(得分:1)

从用户的角度来看,Ajax过滤器总是会产生两个问题。一个是用户无法将过滤网址添加为书签,也无法使用后退按钮。

例如,用户单击过滤器1,然后单击过滤器2.如果用户单击后退按钮或重新加载页面,用户将丢失所有过滤器数据。

这是管理所有

的一种方法

您可以使用此方法Jquery BBQ http://benalman.com/projects/jquery-bbq-plugin/

单击类型过滤器,您可以使用上面的插件将过滤器值附加到url的哈希值,每当用户重新加载页面或使用后退按钮时,您都将所有选定的流派添加到哈希。