0

I have the following values using the active_enum gem:

initializers/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

models/lesson.rb

class Lesson < ActiveRecord::Base
  enumerate :syllabus
end

admin/lessons.rb

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

The ActiveAdmin index column shows the syllabus :id, how do I get it to show the syllabus :name?

I've tried

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

CRUD with AA works as intended with :names

4

2 に答える 2

2

AA ドキュメント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 に答える