Ruby On Rails Active Admin has_many更改下拉列表以使用不同的列

时间:2012-05-22 15:40:30

标签: ruby-on-rails ruby activeadmin

我是ActiveAdmin和RoR的新手,我无法弄清楚如何在has_many关联中更改下拉列表的可见值。

填充模型

class Fillup < ActiveRecord::Base
    // key is car_id:integer
    belongs_to :car
end

汽车模型

class Car < ActiveRecord::Base
    validates :description, :presence => true
    key is fillup_id:integer
    has_many :fillups
end

目前显示的内容:

它当前显示我假设对分配给它的Car的编码引用。 enter image description here

我需要它显示:

我需要它来显示给定的描述,description:string中定义为Car Modelenter image description here

2 个答案:

答案 0 :(得分:10)

这样的事情应该有用......

app/admin/model_name.rb

form do |f|
  f.inputs "My Model Name" do
    # add your other inputs
    f.input :cars, :collection => Car.all.map{ |car| [car.description, car.id] }
    f.buttons
  end 
end

阅读this article以了解有关修改表单的详情。

AciveAdmin使用formtastic,你也应该阅读它。

答案 1 :(得分:5)

Car模型中,只需添加以下内容:

def to_s
  description
end

它应该做的工作!

说明:实际上,你的Car的{​​{1}}方法返回对应当前实例的对象id,这是使用像puts这样的方法时使用的默认值一个东西。要替换模型的显示名称,您必须覆盖此方法,当您使用to_s或在模板中执行puts @car

时,它可以在您的应用中的任何位置使用