引擎模型的 ActiveAdmin 中的枚举选择

Enum selection in ActiveAdmin for a Engine Model

尝试让 ActiveAdmin 表单使用基于对象枚举属性键的选择框时,我继续收到 undefined method 错误。遵循关于堆栈溢出的建议方法 configure active admin forms for enums 似乎让我走到了一半,尽管我的对象的引擎方面似乎通过 NoMethodError 异常使枚举属性。

 #/lib/book_store/admin/books
 if defined?(ActiveAdmin)
  ActiveAdmin.register  BookStore::Book, as: 'Book' do
    # customize your resource here
    form do |f|
      f.semantic_errors # shows errors on :base
      f.inputs   do
        f.input :cover_type, as: :select, collection:  BookStore::Book.cover_type.keys
      end
      f.actions         # adds the 'Submit' and 'Cancel' buttons
    end
    permit_params :name, :lead, :excerpt, :description, :price, :slug, :cover_type, :num_pages, :size, :cover_image, :author, :author_id, :category
  end
end



#app/models/book_store/book.rb
module BookStore
  class Book < ActiveRecord::Base
    belongs_to :author
    belongs_to :category
    enum cover_type: [:soft, :hard]
  end
end

出现以下错误

undefined method `cover_type' for #<Class:0x007fe685217af0>

这里是完整的stack trace

我觉得cover_type应该复数。

f.input :cover_type, as: :select, collection:  BookStore::Book.cover_types.keys

几乎一个相关的答案...

您可以使用 enumerize gem and activeadmin addons 很好地处理枚举。