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
我正在尝试开发一个基本的 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