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

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

填充模型

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

汽车模型

 class Car  true key is fillup_id:integer has_many :fillups end 

它目前显示的内容:

它目前显示我假设对分配给它的Car的编码引用。 在此处输入图像描述

我需要它来表明:

我需要它来显示给定的描述,其定义为description:string Car Model description:string在此处输入图像描述

像这样的东西应该工作……

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 

阅读本文以了解有关修改表单的更多信息。

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

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

 def to_s description end 

它应该做的工作!

说明:实际上, Carto_s方法返回对应于当前实例的对象id,这是使用像对象放置方法时使用的默认值。 要替换模型的显示名称,您必须覆盖此方法,当您使用puts @car或在您的模板中执行<%= @car %>时,它将在您的应用中的任何位置工作