类似Stackoverflow的标签过滤器处理为它的讨论/论坛

时间:2012-02-25 21:41:50

标签: ruby-on-rails ruby ruby-on-rails-3

我正在创建一个讨论论坛。我希望每个讨论主题都有“标签”,而不是嵌套的论坛结构类别。我设想它与Stackoverflow结构相同,您可以通过标记查看问题,然后通过添加其他标记来进一步过滤问题。

例如: https://stackoverflow.com/questions/tagged/ruby-on-rails

可以使用:https://stackoverflow.com/questions/tagged/ruby-on-rails+ruby

进一步过滤

等等......

我的问题是如何在ROR中做到这一点。我有一个与HABTM关系相关联的模型ForumForumTag

我的路线是:

resources :forums do    
  resources :forum_posts, :only => [:new, :edit, :create, :destroy]    
  match 'tagged/:name' => 'forums#tag', :as => 'forums_by_tag', :on => :collection    
end  

在我的forums_controller #tag:

@forums = Forum.where(:forum_tags => {:name => params[:name]}).includes(:forum_tags).all

此时,我陷入困境,因为我不知道如何引入多个标签名称。此外,我不知道如何:a)访问所有@forums和b)中存在的所有forum_tags,然后创建采用当前路径的链接并向其添加“+ new_tag_name”。

(a) @tags = @forums.forum_tags #doesn't work

(b) <%= link_to tagname, forums_by_tag_forum_path(params[:name]+'+'+tagname) %> #doesn't look right

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

你应该尝试这个插件,它拥有你需要的一切并且工作非常顺利:

https://github.com/mbleigh/acts-as-taggable-on