0

我使用 active_enum gem 具有以下值:

初始化程序/active_enum.rb

ActiveEnum.define do
  # defines Syllabus
  enum(:syllabus) do
    value :id => 1, :name => 'Trinity Rock & Pop'
    value :id => 2, :name => 'Trinity Guildhall'
    value :id => 3, :name => 'ABRSM'
  end
end

模型/课程.rb

class Lesson < ActiveRecord::Base
  enumerate :syllabus
end

管理员/课程.rb

ActiveAdmin.register Lesson do
  index do
    column :syllabus
  end
end

ActiveAdmin 索引列显示教学大纲:id,我如何让它显示教学大纲:name

我试过了

column :syllabus, :name
column :syllabus_name
column :syllabus.name

具有 AA 的 CRUD 按预期工作:names

4

2 回答 2

2

根据 AA Docs http://www.activeadmin.info/docs/3-index-pages/index-as-table.html(第 4 个片段)和ActiveEnum 文档

您可以通过以下方式获取名称:

column('Name') {|lesson| lesson.syllabus(:name)}
于 2013-06-28T12:36:09.347 回答
0

解决了。可能不是完成这项工作的最佳方式,但它很简单并且有效:

初始化程序/active_enum.rb

ActiveEnum.define do
  # defines Syllabus
  enum(:syllabus) do
    value :id => 'Trinity Rock & Pop', :name => 'Trinity Rock & Pop'
    value :id => 'Trinity Guildhall', :name => 'Trinity Guildhall'
    value :id => 'ABRSM', :name => 'ABRSM'
  end
end

通过更改 :id 以匹配 :name,ActiveAdmin 索引列显示预期的字符串。

笔记:

  • 使用

初始化程序/active_enum.rb

config.use_name_as_value = true

将值 :id 保存在数据库中,但 activeadmin 将值 :name 显示为“空”。

  • Activeadmin 过滤器:as => :select不起作用。:as => :search没有问题。
于 2013-06-29T07:28:32.053 回答