使用act-as-taggable-on查找相关标签

时间:2010-03-18 01:55:58

标签: ruby-on-rails ruby uiviewcontroller ruby-on-rails-plugins acts-as-taggable-on

在标签#show中,我列出了带有该标签的所有条目。在页面的底部,我希望有类似的内容:“相关标签:链接,列表,相关标签”我的观点如下:

<h2><%= link_to 'Tag', tags_path %>: <%= @tag.name.titleize %></h2>

<% @entries.each do |entry| %>
  <h2><%= link_to h(entry.name), entry %></h2>

  <%- unless entry.phone.empty? -%>
    <p><%= h(entry.phone) %></p>
  <%- end -%>

  <%- unless entry.address.empty? -%> 
    <p><%= h(entry.address) %></p>
  <%- end -%>

  <%- unless entry.description.empty? -%>
    <p><%= h(entry.description) %></p>
  <%- end -%>

  <p2><%= link_to "more...", entry %><p2>
<% end %>

Related Tags: 
<% @related.each do |tag| %>
  <%= link_to h(tag.tags), tag %>
<% end %>

tags_controller.rb:

def show
  @title = Tag.find(params[:id]).name
  @tag = Tag.find(params[:id])
  @entries = Entry.paginate(Entry.find_tagged_with(@tag), 
            :page => params[:page], :per_page => 10, :order => "name")
  @related = Entry.tagged_with(@tag, :on => :tags)
end

每个条目至少有一个标记,这是条目模型所必需的。我想忽略重复的标签,忽略当前标签(列表所属的标签)。我当前的代码显示了这个:

相关标签:Gardens Gardens ToursGardens

花园是入口的一个环节,而不是标签花园。 ToursGardens是包含这些标签的条目的链接。

我想要的结果是:

相关标签:花园,旅游

每个链接都会链接到它的相关标签。谁能帮我实现这个目标?我尝试使用div_for,但我认为这不对。

1 个答案:

答案 0 :(得分:6)

@related_entries = Entry.tagged_with(@tag, :on => :tags)
@related_tags = @related_entries.collect{|x|x.tags}.flatten.uniq