创建新的并从has_many关系中选择现有值

时间:2018-09-11 00:22:04

标签: activeadmin

网络包含VLAN的has_one关系。 局域网包含网络的belongs_to关系。

当我创建新网络时,我希望可以选择通过vlanid选择现有VLAN,或者为新网络创建新VLAN。

在创建网络时,我已经尽力能够创建一个全新的VLAN,但是我希望能够选择一个现有的VLAN或创建一个新的VLAN。

app / models / network.rb

class Network < ApplicationRecord
  has_one :vlan
  accepts_nested_attributes_for :vlan, allow_destroy: true
end

app / models / vlan.rb

class Vlan < ApplicationRecord
  belongs_to :network
end

db / migrate / 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

db / migrate / 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

app / admin / 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

app / admin / 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,但我很困惑。 我已经看到过类似的问题,但是我所看到的答案似乎都不适用于这种特定情况。 任何帮助表示赞赏。

0 个答案:

没有答案