У меня есть индексное представление, которое перечисляет все теги для моей Записи и моделей сообщения. Я хотел бы только показать теги для Записей в этом представлении. Я использую acts-as-taggable-on.
Контроллер тегов:
def index
@letter = params[:letter].blank? ? 'a' : params[:letter]
@tagged_entries = Tagging.find_all_by_taggable_type('Entry').map(&:taggable)
@title = "Tags"
if params[:letter] == '#'
@data = Tag.find(@tagged_entries, :conditions => ["name REGEXP ?",
"^[^a-z]"], :order => 'name', :select => "id, name")
else
@data = Tag.find(@tagged_entries, :conditions => ["name LIKE ?",
"#{params[:letter]}%"], :order => 'name', :select => "id, name")
end
respond_to do |format|
flash[:notice] = 'We are currently in Beta. You may experience errors.'
format.html
end
end
tags#index:
<% @data.each do |t| %>
<div class="tag"><%= link_to t.name.titleize, tag_path(t) %></div>
<% end %>
Я хочу показать только taggable типу 'Запись' в представлении. Какие-либо идеи? Спасибо за чтение моего вопроса.
ВТОРОЕ РЕДАКТИРОВАНИЕ:
Контроллер тегов:
def index
@title = "Tags"
@letter = params[:letter].blank? ? 'a' : params[:letter]
@taggings = Tagging.find_all_by_taggable_type('Entry', :include => [:tag, :taggable])
@tags = @taggings.map(&:tag).sort_by(&:name).uniq
@tagged_entries = @taggings.map(&:taggable)#.sort_by(&:id)#or whatever
if params[:letter] == '#'
@data = Tag.find(@tags, :conditions => ["name REGEXP ?",
"^[^a-z]"], :order => 'name', :select => "id, name")
else
@data = Tag.find(@tags, :conditions => ["name LIKE ?",
"#{params[:letter]}%"], :order => 'name', :select => "id, name")
end
respond_to do |format|
format.html
end
end
tags#index:
<% @data.each do |t| %>
<div class="tag"><%= link_to t.name.titleize, tag_path(t) %></div>
<% end %>
Код Max Williams работает кроме тех случаев, когда я нажимаю на свои алфавитные ссылки разбиения на страницы. Ошибка, которую я получаю [после того, как я нажал на ссылку G алфавитного разбиения на страницы] чтения:
Couldn't find all Tags with IDs (77,130,115,...) AND (name LIKE 'G%') (found 9 results, but was looking for 129)
Кто-либо может указать на меня в правильном направлении?
@taggings = Tagging.find_all_by_taggable_type('Entry', :include => [:tag, :taggable])
@tags = @taggings.map(&:tag).sort_by(&:name)
@tagged_entries = @taggings.map(&:taggable).sort_by(&:id)#or whatever