LoginSignup
6
18

More than 5 years have passed since last update.

Railsでacts-as-taggable-onを使ってタグ管理を行う

Posted at

ブログなどでよくあるタグを実装したいと思っていたところ、acts-as-taggable-onという gem で簡単に実装できたのでメモ

環境

Rails 5.2.1
acts-as-taggable-on 6.0.0

手順

  1. gem インストール
  2. テーブル作成
  3. タグ保存
  4. タグ表示

gem インストール

Gemfile に以下を追記して、bundle install する。

gem 'acts-as-taggable-on', '~> 6.0'

テーブル作成

$ rake acts_as_taggable_on_engine:install:migrations
$ rake db:migrate

これにより、"taggings"、"tags" テーブルが生成される。

タグ保存

タグを付けたいモデルに以下のように追記する。(今回は Post モデルにタグを付けたかったので post.rb に記述)

class Post < ApplicationRecord
  acts_as_taggable
end


タグの form は以下のようにする。
デフォルトでは、カンマ区切りでタグを入力

<%= f.label :tag_list, 'タグをカンマ区切りで入力' %>
<%= text_field_tag 'post[tag_list]', @post.tag_list, :class => "form-control" %>


スペースなどで区切りたい場合は、config/initializers/ に acts_as_taggable_on.rb を作成して、以下のように記述する。

ActsAsTaggableOn.delimiter = ' '


保存する時は、以下のようにコントローラーのストロングパラメータに「:tag_list」を追加する。

def post_params
    params.require(:post).permit(:title, :content, :tag_list)
end

タグ表示

view で以下のように記述することで、表示できる。

<% @post.tag_list.each do |tag| %>
  <span style="background-color: #e9e9e9; border-radius: 5px;"><%= tag %></span>
<% end %>


以上で、最低限のタグ機能が実装できる。さらに、カスタマイズしたい場合は、ドキュメントを参照してください。

6
18
0

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
6
18