3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

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}")

image.png

最後に

よくある記事なので目新しいものはありませんでしたが、チェックボックスを加工するのは久々だったのもあり検索などして対応しました。
今回は暫定対応だったので、ここまでとします。

3
1
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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?