1

エントリモデルとメッセージモデルのすべてのタグを一覧表示するインデックスビューがあります。このビューには、エントリのタグのみを表示したいと思います。私は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 %>

タグ付け可能なタイプ「エントリ」のみをビューに表示したい。何か案は?私の質問を読んでいただきありがとうございます。

2番目の編集:

タグコントローラー:

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)

誰かが私を正しい方向に向けることができますか?

4

1 に答える 1

2
  @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
于 2010-06-07T09:59:33.640 に答える