使用Ruby on Rails进行Hashtag过滤

时间:2010-12-09 02:55:41

标签: ruby-on-rails ajax information-retrieval

新的Rails程序员在这里。对此可能有一个非常简单的解决方案,但我无法弄明白。这是交易:假设我在一个页面上有很多帖子。每个帖子都有一个内容字段,其中一些内容字段在内容中包含#hashtags。

我想开发一种算法,扫描每个帖子的内容(比方说,每2秒),并显示每个标签的列表。我认为AJAX是必要的,因为这些帖子具有AJAX编辑功能。因此,如果更改帖子并创建新的主题标签,则应自动更新主题标签列表以反映此情况。此外,hashtag列表上的每个hashtag都应该是可点击的,发送搜索查询,然后显示包含所选主题标签的帖子。

此最终结果类似于标记和标记云,但应该是动态和集成的(而不是每个帖子都有一个标记字段)。我不想将任何标签附加到帖子作为数据库列。我只是希望应用程序扫描每个帖子的内容并显示可点击的主题标签列表。

非常感谢所有建议。

1 个答案:

答案 0 :(得分:0)

就个人而言,我会使用jQuery来实现您需要的AJAX功能。 Javascript将用于检查服务器是否有新的主题标签,实际的主题标签搜索将在服务器上完成。在你的Post模型中,你可以用这样的东西来进行实际的搜索:

class Post < ActiveRecord::Base
  # class methods
  class << self
    def hashtags
      tags = []

      # cycle through all posts that contain a hashtag, and add them to list
      Post.all(:conditions => 'body like "%#"').each do |post|
        tags += post.hashtags
      end

      # remove duplicates and sort alphabetically
      tags = tags.uniq.sort
    end
  end

  # instance methods
  def hashtags
    @hashtags ||= body.scan(/#\w+/)
  end
end

这里有两个具有相同名称的方法,但是在类(Post.hashtags)上调用一个方法来获取所有帖子的所有主题标签,第二个方法在单个实例上调用({{1} })从该帖子中获取主题标签。

这个难题还有其他几个部分 - 你的控制器代码,你的观点和你的javascript。这个问题对志愿者网站来说是一个很高的要求。你要求为你做几件不同的事情。

我的建议是按照我的描述开始构建这个,并在你遇到麻烦的部分寻求帮助。我们非常乐意提供帮助,但您要求整个javascript驱动的MVC堆栈。尽量将你的问题限制在5-10分钟内可以回答的问题,你可能会得到更多的反馈和帮助。

祝你好运!