前提・実現したいこと
Rails5にてシステムをつくっています。
![]
参照元:https://tenshoku.mynavi.jp/
このような階層的なcheckboxを実装したいと考えているのですが、
・どのようなDB構造なのか?
・view側でどのように実装し、parameterを送り、保存処理を行えば良いか?
と、システム構築の検討がつきません。
試したこと
普段、複数のckeckboxの実装は、collection_check_boxesメソッドを利用しています。
また、複数のモデルへの保存処理は、fields_for + nested attributes を利用して実装した経験があります。
[参考]Railsでaccepts_nested_attributes_forを使ってNested Modelを新規作成するときの注意
[参考]Railsでaccepts_nested_attributes_forとfields_forを使ってhas_many関連の子レコードを作成/更新するフォームを作成
しかし、階層化+複数のcheckboxとなると、手が止まってしまいました。
過去に実装経験がある方、または実装イメージがつく方、ご教授して頂きたいですm(_ _)m
要件
上記のgif画像を元に、実行環境の例とCSVを作成しました。
下記の要件でなくても結構です。必要な場合に参考にして頂けたら幸いです。
要件を整理しました。
[要件]
・3層構造のチェックボックスを実現する
大項目:occupations
中項目:departments
小項目:roles
・チェックボックスはマスタデータ(occupations, departments. roles)を元に生成する
・これらの情報はDBに保存される
・親項目がチェックされた場合、その下の階層にあたる項目は自動的にチェックされる(例えば、大項目の営業 全て(occupatin id 1)が選択された場合、occupation_id 1を持つ、department(営業・代理店営業・ルートセールス・MR, 人材コーディネーター、コールセンター), そのdepartment_idを持つrole(営業法人向け…など)が選択される。)
[わからない点]
・大項目をcollection_check_boxesで実装した後、階層構造の子(departments)をcollection_check_boxesでチェックボックスを実装し、departmentsの子要素(roles)に対してcollection_ckeck_boxesで実装を行う?
テーブル
usersテーブル
Column | Type | Options |
---|---|---|
id | string | null: false |
name | string |
** [マスタデータ]**
occupationsテーブル
Column | Type | Options |
---|---|---|
id | string | null: false |
name | string |
deparmentsテーブル
Column | Type | Options |
---|---|---|
id | string | null: false |
name | string |
rolesテーブル
Column | Type | Options |
---|---|---|
id | string | null: false |
name | string |
CSV形式
*所々上記gifから項目名称を変更しています。
occupationsテーブル
name
全営業
departmetsテーブル
name, occupation_id
営業・代理店など,1
人材コーディネータ,1
コールセンターやカスタマーサポート,1
rolesテーブル
name, department_id
営業・企画営業 法人,1
営業・企画営業 個人,1
営業マネジャー・代理店営業,1
人生カウンセラー,2
専門コーディネータ,2
コールセンタ,3
オペレーション,3
実行環境
Ruby 2.3.1
Rails 5.0.5
mysql Server version: 5.6.34
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/28 15:51 編集
2018/08/28 22:56
2018/09/24 14:01