我是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">#<Utilisateur:0x00000129dbfd60></option>
<option value="2">#<Utilisateur:0x00000129dbf9c8></option>
</select>
这些选项标签显然不是用户友好的。有关如何将:email字段或任何其他自定义字段作为选项标签的任何想法?
感谢您的帮助
答案 0 :(得分:2)
在模型中创建display_name方法:
class Utilisateur < ActiveRecord::Base
has_many :etablissements, :dependent => :destroy
attr_accessible :email, :nom
def display_name
"#{nom}, #{email}"
end
end
您可以在gem本身的源代码中阅读更多内容,我假设您知道在系统中的哪个位置找到它。例如见:
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 ]
祝你好运并有机会!