この構造を処理するために、simple_form と cocoon で RoR を使用しています。Node has_many :addresses
それぞれに、各ノード アドレスの 1 つをメイン アドレス (実際には SNMP 監視に使用されるもの) としてフラグを立てるAddress
ブールフィールドがあります。:main
これらのアドレスを管理するネストされたフォームがありますが、メインのアドレスを選択するきれいな方法が見つかりません。
論理的には、各アドレスが 1 つのラジオ グループ オプションであるラジオ ボタン グループを使用する必要がありますが、ネストされた形式では、各ラジオ ボタンは 1 つのアドレスに属し、異なる名前を持ちます。つまり、異なるグループに属します。
ラジオ ボタンの入力をノードの仮想属性にリンクし、選択したアドレスの:main
フィールドをtrue
コールバックに設定できますが、各ボタンをそのアドレスにリンクするにはどうすればよいでしょうか (アドレス ID をボタンの値として使用できますが、新しく追加されたアドレスはIDはまだありません)。
これは、ノード フォームがどのように表示されるかを簡略化したものです (括弧はラジオ ボタンを表し、括弧はテキスト入力を表します)。
Name : [MyNode1 ]
| Address | Main |
|------------|------|
| [10.0.0.1] | (*) |
| [10.0.0.2] | ( ) |
| [10.0.0.3] | ( ) |
私の他の唯一の解決策は、JSフィードの選択ボックス(アドレスリストで何かを変更するとオプションが更新される)ですが、単純なラジオグループよりもクリーンで論理的ではありません...
編集
「許容できる」回避策は、ラジオ ボタンを属性以外のname
もの (例:data-group
属性) でグループ化することです。誰かがこれを行うことができる優れた JS/jQuery プラグインを知っていますか?