Как использовать Rails Gem Active Admin с базовыми ассоциациями - PullRequest
0 голосов
/ 26 декабря 2011

Я новичок в Rails и хочу использовать Active Admin в моем первом проекте для управления 2-мя вложенными объектами, но я спотыкаюсь о фильтрах (недружественные метки).

Вот мои 2 модели:

class Utilisateur < ActiveRecord::Base

  has_many :etablissements, :dependent => :destroy  
  attr_accessible :email, :nom  

end

class Etablissement < ActiveRecord::Base

  belongs_to :utilisateur  
  attr_accessible :intitule

end

Тогда в app / admin / etablissements.rb у меня есть:

ActiveAdmin.register Etablissement do

  filter :intitule
  filter :utilisateur, :as => :select, :collection => proc { Utilisateur.all }

end

Но поле выбора выглядит так:

<label for="q_utilisateur_id_eq">Utilisateur</label>
<select id="q_utilisateur_id_eq" name="q[utilisateur_id_eq]">
<option value="">Any</option>
<option value="1">#&lt;Utilisateur:0x00000129dbfd60&gt;</option>
<option value="2">#&lt;Utilisateur:0x00000129dbf9c8&gt;</option>
</select>

Эти метки опций явно не удобны для пользователя. Любые идеи о том, как использовать поле: email или любое другое настраиваемое поле в качестве метки опции?

Спасибо за вашу помощь

1 Ответ

2 голосов
/ 12 января 2012

Создайте метод display_name в вашей модели:

class Utilisateur < ActiveRecord::Base

  has_many :etablissements, :dependent => :destroy  
  attr_accessible :email, :nom  

  def display_name
    "#{nom}, #{email}"
  end

end

Вы можете прочитать больше в источнике самого драгоценного камня, я предполагаю, что вы знаете, где его найти в вашей системе.См. Например:

path-to-active-admin-gem/lib/active_admin/application.rb

В этом файле вы увидите этот метод:

# Active Admin makes educated guesses when displaying objects, this is
# the list of methods it tries calling in order
setting :display_name_methods, [ :display_name,
                                  :full_name,
                                  :name,
                                  :username,
                                  :login,
                                  :title,
                                  :email,
                                  :to_s ]

Удачи и шансов!

...