はじめに
rails案件でタグが力業で実装されていたので、そこを改修した際の備忘録となります。
親子孫関係を一括で登録する似たような記事はたくさんあるので、説明は割愛気味で記載しています。
実装状況
ruby:3.3.0
ruby on rials:7.1.3
css , js: jsbundling-rails + cssbundling-rails 構成
view:haml
モデルの構成
以下のような構成
master_tag -> test_tag <- test
モデルの変更
class MasterTag < ApplicationRecord
has_many :test_tag
end
class TestTag < ApplicationRecord
belongs_to :master_tag
belongs_to :test
end
class Test < ApplicationRecord
has_many :test_tag, dependent: :destroy
has_many :tags, through: :test_tag, source: :master_tag
accepts_nested_attributes_for :tags, allow_destroy: true
end
コントローラー
ストロングパラメータ部分を修正
def test_params
params.require(:test).permit(:title, tag_ids: [])
end
ビュー
タグ
= content_tag(:dev, class: 'flex items-center') do
= f.collection_check_boxes :tag_ids, MasterTag.all, :id, :name do |tag|
= tag.label do
= content_tag(:dev, class: 'flex items-center m-1') do
= tag.check_box(class: 'checkbox rounded')
= content_tag(:dev, tag.text, class: 'badge badge-lg', style: "background-color: #{tag.object.color_code}")
最後に
よくある記事なので目新しいものはありませんでしたが、チェックボックスを加工するのは久々だったのもあり検索などして対応しました。
今回は暫定対応だったので、ここまでとします。