Rails 3 и ActiveAdmin. Фильтр отображает объекты, а не название компании - PullRequest
6 голосов
/ 05 января 2012

У меня есть список клиентов, но в разделе фильтра в правой колонке я получаю такой список #<Customer0X0B500> в меню выбора.Как можно вместо этого отобразить атрибут company_name Клиента?

Ответы [ 4 ]

17 голосов
/ 05 января 2012

Разобрался, спасибо!

filter :customer, :collection => proc {(Customer.all).map{|c| [c.company_name, c.id]}}

4 голосов
/ 05 января 2012

Я не уверен, что понимаю вас, но, возможно, вам следует определить метод to_s внутри класса Customer, например,

class Customer

  def to_s
    self.company_name
  end

end

было бы проще, если бы вы поделились кодом

2 голосов
/ 25 июня 2012
class Customer

  def display_name
    self.company_name
  end

end

Определение display_name вместо to_s работает лучше ...

  • to_s может вызываться автоматически другими объектами.
  • display_name влияет только на ActiveAdmin

Вы также можете определить:

show :title => :display_name

В результате ваше название компании будет отображаться как заголовок на страницах просмотра вместо Company #х.

1 голос
/ 10 января 2012

Для правильного отображения меню ActiveAdmin попробуйте в Model.rb: - ​​

alias_attribute: name,: category_name

...