rails_admin 自定义具有 belongs_to 关系的下拉菜单

rails_admin customise dropdown with belongs_to relationship

我正在尝试开发一个基本的 rails_admin 应用程序。我的用例有项目和学生。

class Project < ApplicationRecord
    belongs_to student
end

class Student < ApplicationRecord
    has_many projects
end

由于学生可以有相同的名字,所以在创建项目时很难识别学生。 我需要结合学生的学号和姓名在下拉列表中形成一个独特的条目。 因此,我希望 Project 模型的视图在下拉列表中将学生列表显示为 123 - John Doe 而不仅仅是 John Doe.

您需要定义方法标题

def title
  "#{roll_number} - #{full_name}"
end

因为 rails 管理员将尝试先使用名称方法然后使用标题方法来显示 object。

您可以像这样全局覆盖此行为:

RailsAdmin.config {|c| c.label_methods << :description} 

这会将任何模型的方法描述设置为用于标记 objects 的方法描述。

您也可以像这样覆盖每个模型:

RailsAdmin.config do |config|
  config.model 'Team' do
    object_label_method do
      :custom_label_method
    end
  end

  def custom_label_method
    "Team #{self.name}"
  end
end

参考:The object_label_method method