ブログなどでよくあるタグを実装したいと思っていたところ、acts-as-taggable-onという gem で簡単に実装できたのでメモ
環境
Rails 5.2.1
acts-as-taggable-on 6.0.0
手順
- gem インストール
- テーブル作成
- タグ保存
- タグ表示
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
<%= f.label :tag_list, 'タグをカンマ区切りで入力' %>
<%= text_field_tag 'post[tag_list]', @post.tag_list, :class => "form-control" %>
ActsAsTaggableOn.delimiter = ' '
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 %>