【Ruby on Rails5】acts-as-taggable-onでタグ付けする
今回の内容
acts-as-taggable-onというタグ付けが簡単にできる(大苦戦した)gemを用いてタグ付けをしたので自分用にメモ
動作環境
Windows10
Rails 5.1.4
acts-as-taggable-on 5.0.0
acts-as-taggable-onのインストール
Gemfileにacts-as-taggable-onを追加
初めに、Gemfileに追記します。この際Rails5以上だと
と記述しないとエラーを吐くようです。
必要なテーブルの作成
rails acts_as_taggable_on_engine:install:migrations
rails db:migrate
を行い、テーブルを作成します。
コンテンツにタグ機能を付ける
適当なテーブル(ここではContents)を作成し、それに機能を実装していきます。
1.Scaffoldでコンテンツを作成
rails g scaffold Content name
rails db:migrate
2.modelにskillsというタグリストを追加
content.rb
class Content< ApplicationRecord
acts_as_taggable_on :skills
end
3.フォームで入力ができるようにします
_form.html.erb
<div class='field'>
<%= f.label :skill_list, 'タグをカンマ区切りで入力' %><br/>
<%= text_field_tag 'content[skill_list]', content.skill_list.join(',') %>
</div>
4.コントローラーのパラメータで受け取れるようにする
contents_controller.rb
def content_params
params.require(:content).permit(:name, :skill_list)
end
5.画面に表示する
controller側のindexはScaffoldで生成されたもののままです。
index.html.erb
<% @contents.each do |content| %>
<tr>
<td><%= content.name %></td>
<td><%= content.skill_list %></td>
</tr>
<% end %>
これでごくごく簡単なタグ機能を作ることが出来ました!
参考サイト
Railsでacts-as-taggable-onを使ってタグ管理を行う - Rails Webook
https://rubyplus.com/articles/4231-Tagging-using-Acts-as-Taggable-On-in-Rails-5