スキップしてメイン コンテンツに移動

Rails タグ付け機能を acts-as-taggable-on / Tokenfield for Bootstrap で簡単実装

Railsのアプリにタグをつけてみます。そもそもこれがやりたくてWebアプリを作りはじめたんだったっけ。

acts-as-taggable-onを使います。Rails + タグ機能で検索して、一番できた気がしたので。

環境

  • rails 4.0.2
  • ruby 2.1.0dev
  • acts-as-taggable-on 3.1.1

インストール

Gemfileに以下を追記します。

gem "acts-as-taggable-on"

bundle installを実行します。

余談ですが、デザリング環境でbundle installが実行できない件、なんとかしたいです。見えないプロキシが働いてるのか・・・。うまく行ってほしい。。

マイグレーションのインストール(?)をします。bundle installを実行すると、次にこれをしなさいと言われます。

rake acts_as_taggable_on_engine:install:migrations

マイグレーションをします。

rake db:migrate

これで準備完了です。

タグ付けしたいモデルにタグを設定

タグをつけたいモデルに以下を追記します。

acts_as_taggable # Alias for acts_as_taggable_on :tags

これだけ。これだけ!

UIからタグを設定

タグの入力には、Tokenfield for Bootstrapを使ってみます。
初めは’jQuery-Tags-Input’を使うつもりだったのですが、Bootstrapの見た目との相性が悪かったので、やめました。

インストール

  1. bootstrap-tokenfieldから、ソースコードをダウンロードします。
  2. /app/assets/javascriptsに取得したソースコードの/dist/bootstrap-tokenfield.jpをコピーします。
  3. /app/assets/stylesheetsに、取得したソースコードの/dist/css/bootstrap-tokenfield.min.cssをコピーします。

UIを作成

対象モデルの作成フォームに以下を追記します。

<%= tag(:input, { id: "tokenfield", type: "text", name: "モデル名[tag_list]", value: tag_str, class: "form-control" }) %>
 :
<script>
    $('#tokenfield').tokenfield()
</script>

該当モデルのstrong parametersに、:tag_listを追加します。

これでタグを入力できる様になりました!
とっても簡単でびっくりです。ホントは候補値を出したりできるみたいですが、今のところうまく動いていません・・。

何か分かったら、追記します。


参考

コメント

Amazon Affiliate