如何使用 Rails Gem Active Admin 进行基本关联

发布于 2024-12-23 01:54:04 字数 1071 浏览 1 评论 0原文

我是 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 字段或任何其他自定义字段作为选项标签有什么想法吗?

感谢您的帮助

I'm new to Rails and I want to use Active Admin on my first project to manage 2 nested objects but I'm stumbling on the filters (non-friendly labels).

Here are my 2 models :

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

Then in app/admin/etablissements.rb I have :

ActiveAdmin.register Etablissement do

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

end

But the select field looks like :

<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>

Those option-labels are clearly not user-friendly. Any ideas on how to have the :email field or any other custom field as the option-label ?

Thanks for your help

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

南七夏 2024-12-30 01:54:04

在模型中创建一个 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 ]

Good lucky et bonne opportunity!

Create a display_name method in your model:

class Utilisateur < ActiveRecord::Base

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

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

end

You can read more in the source of the gem itself, i assume you know where to find it on your system. See for example:

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

In that file you will see this method:

# 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 ]

Good luck et bonne chance!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文