Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Ruby On Rails Active Admin has_many changing dropdown to use a different column

I am completely new to ActiveAdmin and RoR and i cant figure out how to change the visible value of the dropdowns in a has_many association.

Fillup Model

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

Car Model

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

What it currently shows:

It currently shows im assuming an encoded reference to the Car assigned to it. enter image description here

What i need it to show:

I need it to show the description given which is defined as description:string in the Car Model. enter image description here

like image 361
NDBoost Avatar asked Dec 07 '22 14:12

NDBoost


2 Answers

Something like this should work...

In 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

Read this article to learn more about modifying the form.

AciveAdmin uses formtastic, you should read about that as well.

like image 109
Kyle Avatar answered Mar 01 '23 23:03

Kyle


In your Car model, just add something like :

def to_s
  description
end

It should do the job !

Explanation : Actually, your Car's to_s method returns the object id corresponding to the current instance, that's the default thing used when using a method like puts on an object. To replace a model's display name, you have to override this method and it will work anywhere in your app when you use puts @car or in your templates doing <%= @car %>

like image 34
Cydonia7 Avatar answered Mar 01 '23 23:03

Cydonia7