2009年8月28日金曜日

Railsでタグクラウド

いくつかプラグインがあるが、acts_as_taggable_on_steroidsが一番人気のようだ。

acts_as_taggable_on_steroidsの使い方は、acts_as_taggable_on_steroidsの使い方まとめ - ひげろぐが参考になる。

acts_as_taggable_on_steroidsのインストール元については、Railsのtagプラグイン「acts_as_taggable_on_steroids」がgithubに行ってた - 常識という迷信にあるとおり、現在はgithubにあるのが最新のようだ。



上記の参考サイトではacts_as_taggable_on_steroidsの機能をフルに使っているが、タグクラウドを表示したいだけなら下記だけでOK。

  1. acts_as_taggable_on_steroidsをインストール
  2. タグのモデルを用意する(既存のモデルでもcountと表示用の文字列(下記の例ではlabel)さえあればOK)
    # tag_sample.rb
    class TagSample
     attr_accessor :count, :label
    end
  3. 上記のモデルにデータをセットした配列を用意
    # FooController.rb
    # 実際にはDBから取得したデータとかをループで処理するだろうけど
    tag1 = TagSample.new

    tag1.count = 10

    tag1.label = "ラベル1"
    tag2 = TagSample.new

    tag2.count = 20

    tag2.label = "ラベル2"
    @tags = [tag1, tag2]

  4. ヘルパーでTagsHelperをインクルードする
    # foo_helper.rb
    module FooHelper
    include TagsHelper
    end
  5. ビューでタグクラウドを表示(第2引数のCSSクラスの数は増減OK)
    <!-- foo/bar.html.erb -->
    <% tag_cloud(@tags, ["tag-s", "tag-m", "tag-l"]) do |tag, css| %>
     <%= link_to(h(tag.label), {:action=> :tags, :id => tag.label}, :class => css) %>
    <% end %>
  6. CSSで見た目を調整
    a.tag-s { font-size: 80%; }
    a.tag-l { font-size: 150%; }

0 件のコメント:

ブログ アーカイブ

tags