私は Ruby on Rails に非常に慣れていないので、見落としている簡単な解決策があるかもしれません。
tldr バージョン - そのモデルのインデックス ページで、特定のモデルのすべてのインスタンスに割り当てられた個別の (つまり、繰り返しのない) タグの Acts As Taggable On タグ クラウドを表示するにはどうすればよいですか?
より長いバージョン - Video と呼ばれるモデルがあり、Acts as Taggable Onとこの素晴らしいチュートリアルを使用してタグ付け機能をうまく実装できました。
ここでやりたいことは、ビデオのインデックス ページ (index.html.erb) で、ユーザーが個々のビデオに割り当てたすべての個々のタグの概要を表示することです。たとえば、次のようにタグ付けされた 3 つの動画があるとします。
Video 1: great, banana, book
Video 2: small, great, apple
Video 3: rubbish, small, banana
インデックス ページに次のタグのリストを表示したいと考えています。
great, banana, book, small, apple, rubbish.
私のモデル(省略)のコードは次のとおりです。
class Video < ActiveRecord::Base
attr_accessible :tag_list # Lots of other fields in here as well, but not relevant
acts_as_taggable_on :tags
end
ビデオヘルパーのコードは次のとおりです。
module VideosHelper
include ActsAsTaggableOn::TagsHelper
end
最後に、gem のドキュメントに従って、次のコードをコントローラーに追加しました。
class VideosController < ApplicationController
def tag_cloud
@tags = Video.tag_counts_on(:tags)
end
end
では、ビューのインデックス ページにどのコードを追加すればよいでしょうか? ドキュメントに従って、次のことをもう一度試しました。
<% tag_cloud(@tags, %w(css1 css2 css3 css4)) do |tag, css_class| %>
<%= link_to tag.name, { :action => :tag, :id => tag.name }, :class => css_class %>
<% end %>
しかし、ビデオのインデックス ページに移動すると、次のエラーが返されます。
undefined method `empty?' for nil:NilClass
私が言ったように、私は明らかに単純なものを欠いていますが、私は Rails (および Ruby) に完全に慣れていないので、まだ自分の足を見つけています。