我正在创建一个讨论论坛。我希望每个讨论主题都有“标签”,而不是嵌套的论坛结构类别。我设想它与Stackoverflow结构相同,您可以通过标记查看问题,然后通过添加其他标记来进一步过滤问题。
例如: https://stackoverflow.com/questions/tagged/ruby-on-rails
可以使用:https://stackoverflow.com/questions/tagged/ruby-on-rails+ruby
进一步过滤等等......
我的问题是如何在ROR中做到这一点。我有一个与HABTM关系相关联的模型Forum
和ForumTag
。
我的路线是:
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
有什么建议吗?