LoginSignup
2
12

More than 3 years have passed since last update.

Rails gem acts-as-taggable-onを使ってみた

Last updated at Posted at 2019-01-22

はじめに

この記事はRailsのgem acts-as-taggable-onを実践的に使ってみる記事です。
ですが、私自身まだまだなので至らないところもあるかもしれませんが、どうかよろしくお願いいたします。
準備などは軽く紹介する程度で使うことに重きを置いていきます。

参考

mbleigh/acts-as-taggable-onより詳しく書いてありますのでこちらを主に参照するといいと思います。
エラーなど私は出ませんでしたが、もしあればここも参考になると思います。

準備

Gemfile
gem 'acts-as-taggable-on', '~> 6.0'
bundle install
rails acts_as_taggable_on_engine:install:migrations
rake db:migrate

タグ機能を付加したいモデルファイルに記述しましょう。

model.rb
acts_as_taggable

応用

タグでの検索や似たタグの取得などの機能を実装したくなると思います。
それらを実装しようと思います。
まず検索から

検索機能

ちなみにですが検索機能を作る際にはfrom_tagを使うようにしましょう。
こちらの記事を参照してください。

【Rails】form_for/form_tagの違い・使い分けをまとめた - Qiita

search_controller.rb
#検索
#imageモデルにタグをつけている場合
#form_tagで:search_tagを送信。検索する文字列です。
#match_allは完全一致で検索
Image.tagged_with([params[:search_tag]], :match_all => true)...

#anyは部分一致で検索
Image.tagged_with([params[:search_tag]], :any => true)...

#excludeは検索対象を含まない検索
Image.tagged_with([params[:search_tag]], :exclude => true)...

似たタグのデータ取得

この機能もよく見かけると思います。
簡単に作ってみました。
ある画像のページを開いた際にその画像についたタグと似たタグのついた
画像をいくつかランダムに取得しましょう。

match_tag_controller.rb
#選択された画像のデータを取得。URLにIDを載せます。それを取得し表示
selected_image = Image.find_by("id = ?", params[:id])
#タグの一致検索
@match_tag_image =Image.tagged_with([selected_image.tag_list] :any => true)...

最後に

自分が制作した際に使った機能を自分も忘れないようにメモ程度に書きましたが、
もし役に立てば幸いです。
他も方々も多く記事が出ていますので、そちらも参考にするとよりいいと思います。
ありがとうございました。

2
12
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
12