Networks содержит отношение has_one для vlans.
Vlans содержит отношение принадлежат к сетям.
Когда я создаю новую сеть, я хочу, чтобы у меня была возможность выбрать существующий vlan с помощью vlanid -или- или создать новый vlan для новой сети.
Я смог создать совершенно новый vlan при создании сети, но я хотел бы иметь возможность выбрать существующий vlan -или- создать новый.
приложение / модели / network.rb
class Network < ApplicationRecord
has_one :vlan
accepts_nested_attributes_for :vlan, allow_destroy: true
end
приложение / модели / vlan.rb
class Vlan < ApplicationRecord
belongs_to :network
end
дб / мигрирует / create_network.rb
class CreateNetworks < ActiveRecord::Migration[5.2]
def change
create_table :networks do |t|
t.string :comment
t.string :name
t.timestamps
end
end
end
дб / мигрирует / create_vlan.rb
class CreateVlans < ActiveRecord::Migration[5.2]
def change
create_table :vlans do |t|
t.string :comment
t.integer :vlanid
t.belongs_to :network
t.timestamps
end
end
end
приложение / администратор / networks.rb
ActiveAdmin.register Network do
permit_params :comment, :name, vlan_attributes: [ :id, :vlanid, :comment, :_destroy, :_edit ]
index do
selectable_column
column "Network Name" do |i|
i.name
end
column :comment
column "VLAN ID" do |i|
i.vlan.vlanid
end
column "VLAN Comment" do |i|
i.vlan.comment
end
actions
end
show do
attributes_table do
row :name
row :comment
end
panel 'vlan' do
table_for network.vlan do
column :vlanid
column :comment
end
end
end
form do |f|
f.inputs 'Details' do
f.input :name
f.input :comment
end
f.inputs 'Vlans' do
f.has_many :vlan do |c|
c.input :vlanid
c.input :comment
end
end
f.actions
end
end
приложение / администратор / vlans.rb
ActiveAdmin.register Vlan do
belongs_to :network
permit_params :comment, :vlanid
end
Я пытался использовать что-то вроде следующего в app / admin / networks.rb
panel 'vlan' do
table_for network.vlan do
column :vlanid, :as => :select
column :comment
end
end
Я получаю раскрывающийся список в этом случае, но единственными значениями являются «Да» и «Нет».
Я впервые вхожу в activeadmin, и я в тупике.
Я видел несколько похожих вопросов, размещенных вокруг, но ни один из ответов, которые я видел, не относился к этой конкретной ситуации.
Любая помощь приветствуется.