51
86

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

動的なタグ生成をするgem「acts-as-taggable-on」を使ってみました

Last updated at Posted at 2017-04-15

環境

  • Rails 5.0.2

  • ruby 2.2.6p396 (2016-11-15 revision 56800) [x86_64-darwin15]

概要

  • Railsアプリケーションにタグ管理機能を作成するgem

  • 動的なタグ生成を助ける

  • tagsという名称以外にもskillsなどで使用できる

GitHubのURL
https://github.com/mbleigh/acts-as-taggable-on

インストール

Gemfileに以下の記述を追加します。

gem 'acts-as-taggable-on'

bundle実行。

$ bundle install --path vendor/bundle

MySqlを使用している場合、以下を追加で実行するする必要があるそうです。

$ rake acts_as_taggable_on_engine:tag_names:collate_bin

必要なテーブルを生成します。

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

使用するための準備

タグをつけたいモデルに以下を追加。

# モデルに記述
class User < ActiveRecord::Base
  acts_as_taggable
  acts_as_taggable_on :skills, :interests
end

# コントローラーに記述
class UsersController < ApplicationController
  def user_params
    params.require(:user).permit(:name, :tag_list)
  end
end

これらの意味は、acts_as_taggableacts_as_taggable_on :tagsのエイリアスとなっていて、

acts_as_taggable_on :skills, :interestsによって@user.skill_listなどを使用可能にしている

実際は、使用したいタグだけを登録すればよいです。

今回はtagsを使用するため、モデルの部分を以下のように記述します。

class User < ActiveRecord::Base
  acts_as_taggable
end

使用方法

タグの追加と削除の仕方は次のような方法で出来ます。

@user = User.new(name: 'poyo')
@user.tag_list.add('awesome')     # タグを追加
@user.tag_list.remove('awesome')  # タグを削除

引数を複数指定することで一度に追加削除もできる

@user.tag_list.add("awesome", "slick")
@user.tag_list.remove("awesome", "slick")

表画面の記述

フォーム作成

# フォームのスタイルにBootstrapを使用
<%= form_for(@user) do |f| %>
  <div class="form-group">
    <%= f.label :user, :name %>
    <%= f.text_field :name, class: "form-control" %>
  </div>
  <div class="form-group">
    <%= f.label :user, :tag_list %>
    <%= f.text_field :tag_list, value: @user.tag_list.join(','), class: "form-control" %>
  </div>
  <div class="pull-right">
    <%= f.submit '登録する', class: "btn btn-info" %>
  </div>
<% end %>

これで、コンマ区切りで入力したタグを登録することができるようになります。

スクリーンショット 2017-04-15 13.35.16.png

bootstrap tags inputを使用すると、もっと入力しやすいフォームに変更することも出来ます。
また追記か他の記事で実装して詰まった部分など書くかもしれません。

スクリーンショット 2017-04-15 13.35.42.png

参考にしたサイト

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

README

51
86
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
51
86

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?