rails_admin 获取当前实体并显示自定义枚举
rails_admin get the current entity and display custom enum
我正在尝试使用除名称以外的其他内容来自定义枚举字段。
例如,我在数据库中的实体记录有如下列:name、postal_code、id 等 ..
我想在下拉菜单中有这样的内容“#{name} #{postal_code}, #{department}
我正在这样做:
field :city, :enum do
enum do
# Here I would like to get the entity from DB in order to have all
# columns to something similar as =>
entity.collect.each { |c| "#{c.name} (#{c.postal_code}), #
{c.department.name}"}
end
end
但我不知道如何获取 City 实体实际值的活动记录(在我的示例中为实体)。
我该怎么做?
注意:该部门属于与 City
关联的另一个模型
你可以做到,但你需要为每个 select 下拉列表定义一个名称和一个(稳定的)值,一个简单的散列来做到这一点:
field :city, :enum do
enum do
entity = bindings[:object]
City.all.map do |c|
{c.id => "#{c.name} (#{c.postal_code}), #{c.department.name}"}
end
end
end
我假设每个城市都有一个 ID,但您可以使用要存储在数据库该字段上的任何值。
因此您的用户会看到漂亮的格式化字符串,但 rails 管理员会 post 城市字段中带有城市 ID 的表单。
考虑到 OP 评论,我假设所讨论的模型具有如下定义的关联:
belongs_to :city
city 字段本身是这样的
rails_admin do
edit do
field :city
end
end
因为这样 rails 管理员将呈现一个 select 下拉列表,允许您搜索城市而无需全部加载。
之后在 City 模型上你可以定义标题方法,引用 the docs
默认情况下,它会尝试对相关记录调用 "name" 或 "title" 方法。如果 object 对两者都不响应,那么标签将由模型的类名加上其数据库标识符构成。您可以添加标签方法(或替换默认的 [:name, :title])为:
RailsAdmin.config {|c| c.label_methods << :rails_admin_title }
然后可以定义标题方法
class City < ApplicationRecord
def rails_admin_title
"#{self.name} (#{self.postal_code}), #{self.department.name}"
end
end
在相关问题中,您可能想要配置 rails 管理员搜索城市的方式,我会 just link to the docs。
我正在尝试使用除名称以外的其他内容来自定义枚举字段。
例如,我在数据库中的实体记录有如下列:name、postal_code、id 等 ..
我想在下拉菜单中有这样的内容“#{name} #{postal_code}, #{department}
我正在这样做:
field :city, :enum do
enum do
# Here I would like to get the entity from DB in order to have all
# columns to something similar as =>
entity.collect.each { |c| "#{c.name} (#{c.postal_code}), #
{c.department.name}"}
end
end
但我不知道如何获取 City 实体实际值的活动记录(在我的示例中为实体)。
我该怎么做?
注意:该部门属于与 City
关联的另一个模型你可以做到,但你需要为每个 select 下拉列表定义一个名称和一个(稳定的)值,一个简单的散列来做到这一点:
field :city, :enum do
enum do
entity = bindings[:object]
City.all.map do |c|
{c.id => "#{c.name} (#{c.postal_code}), #{c.department.name}"}
end
end
end
我假设每个城市都有一个 ID,但您可以使用要存储在数据库该字段上的任何值。
因此您的用户会看到漂亮的格式化字符串,但 rails 管理员会 post 城市字段中带有城市 ID 的表单。
考虑到 OP 评论,我假设所讨论的模型具有如下定义的关联:
belongs_to :city
city 字段本身是这样的
rails_admin do
edit do
field :city
end
end
因为这样 rails 管理员将呈现一个 select 下拉列表,允许您搜索城市而无需全部加载。
之后在 City 模型上你可以定义标题方法,引用 the docs
默认情况下,它会尝试对相关记录调用 "name" 或 "title" 方法。如果 object 对两者都不响应,那么标签将由模型的类名加上其数据库标识符构成。您可以添加标签方法(或替换默认的 [:name, :title])为:
RailsAdmin.config {|c| c.label_methods << :rails_admin_title }
然后可以定义标题方法
class City < ApplicationRecord
def rails_admin_title
"#{self.name} (#{self.postal_code}), #{self.department.name}"
end
end
在相关问题中,您可能想要配置 rails 管理员搜索城市的方式,我会 just link to the docs。