rails_admin使用belongs_to关系自定义下拉列表

时间:2017-10-09 11:44:24

标签: ruby-on-rails-4 rails-admin belongs-to

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

class Project < ApplicationRecord
    belongs_to student
end

class Student < ApplicationRecord
    has_many projects
end

由于学生可以使用相同的名称,因此在创建项目时很难识别学生。 我需要结合学生的掷骰号码和名称,在下拉列表中形成一个唯一的条目。 因此,我希望Project模型的视图能够将下拉列表中的学生列表显示为123 - John Doe,而不仅仅是John Doe

1 个答案:

答案 0 :(得分:2)

您需要定义方法标题

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

由于rails admin将尝试首先使用name方法然后使用title方法显示对象。

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

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

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

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

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