acts_as_taggable_onを使ってみるー
そしてもう自力でタグ付けできないカラダに。
ブログやらブックマークやらでタグ付けが便利なんだけど、もうGem使った方がいいよなーと思って。
便利すぎてもう自力でやる気がなくなりましたとさ。タグクラウドまでも。
基本的な使い方はこちらを参考に。
http://wine4u.seesaa.net/article/169189619.html
とりあえず
「タグ名」と「関連付け」の2個のテーブルができる。「関連付け」のテーブルには、相手テーブル名とタグ種別(?)みたいなものを保持している。
なので、これさえあれば複数のテーブルにタグ付け出来るので、やたらとテーブルが増えたりすることもなくていいかんじ。
ただ、Rails3.1.0rc5でWarningでてます。
フォームについて
タグの入力については、半角カンマ区切りで複数入力できる。
で、「チェックボックス」+「テキストフィールド」の組み合わせで「既存」+「新規」とやるときはこんな感じでやってみた。
注:ArticleモデルにTagをつけてます。
<div class="field"> <% Article.tag_counts.each do |tag| %> <%= f.check_box :tag_list, {:id => "article_#{tag}", :multiple => true, :checked => @article.tag_list.include?(tag.to_s)}, tag, nil %> <%= f.label tag, tag %><br /> <% end %> <%= f.text_field :tag_list, :name => 'article[tag_list][]', :value => nil %> </div>
あいかわらず、雑な感じです。もっとキレイに書けるようになりたい・・・
誰か添削してくれないかなー。
おわりー
「check_box」と「check_box_tag」の書き方やらもー。ね。覚えられないよ。
〜〜〜 2011 09 12 追記 〜〜〜
パフォーマンスあーーっぷ
ログみるとtagsテーブル見に行っててきついっぽい。
で、調べてみたらcached_XXXX_listフィールドを追加すればよいらしい。
articlesテーブルにフィールド追加
rails g migration add_column_to_articles cached_tag_list:string rake db:migrate
ビューのほうではこのフィールドを表示するようにすればよいみたい。