Поиск связанных тегов с использованием актов-как-тегов на - PullRequest
1 голос
/ 18 марта 2010

В теге # 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 Ответ

6 голосов
/ 18 марта 2010
@related_entries = Entry.tagged_with(@tag, :on => :tags)
@related_tags = @related_entries.collect{|x|x.tags}.flatten.uniq
...