rails 管理员属于下拉列表

rails admin belongs to dropdown list

我从管理页面管理我的数据库,并想从下拉列表中为 indics 分配一个组。

所以我现在有什么:

印度语 table:

id       | int(11)      | PRIMARY 
name     | varchar(255) |
group_id | int(11)      |

组table:

id       | int(11)      | PRIMARY 
name     | varchar(255) |

indic.rb:

belongs_to :group

rails_admin do 
  list do 
    field :id
    field :name
    field :group_id
  end
  edit do
    field :name
    field :group_id
  end
end

group.rb:

has_many :indic

rails_admin do 
  list do 
    field :id
    field :name
  end
  edit do
    field :name
  end
end

没有下拉列表(我的意思是从列表中选择组,每个组都来自数据库),我什至不确定它们是否链接,因为我可以输入 group_id存在于 table.

组中

我在其他答案中发现我需要将编辑字段更改为 field :group_id, :belongs_to_association,但如果这样做,我会在加载页面时遇到错误:

Showing /home/ma/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rails_admin-0.6.5/app/views/rails_admin/main/edit.html.haml where line #2 raised:

undefined method `klass' for #< RailsAdmin::Adapters::ActiveRecord::Property:0x007fd3f99d1e38 >

= rails_admin_form_for @object, url: edit_path(@abstract_model, @object.id), as: @abstract_model.param_key, html: { method: "put", multipart: true, class: "form-horizontal denser", data: { title: @page_name } } do |form|

= form.generate action: :update

有人知道如何解决这个问题吗?同样对于下拉列表,id 列表会很好,但是一个完美的解决方案(我不知道是否可能)是列出那些 group.id.

的名称

终于找到解决方法了,真是笨,link没做是因为关键字末尾的"s"搞错了,必须修改table,不是id列

这是正确的解决方案:

indicator.rb:

belongs_to :group   # no "s" for belongs_to

rails_admin
  ...      
    edit
      field :group  # table name, not the name of the reference column !
  ...

indic.rb:

has_many :indics   # need "s" for has_many

有了这个一切都按预期工作,列表默认带有名称,所以我的奖金也完成了:)