在ActiveAdmin中为引擎模型选择枚举

Dog*_*Dog 2 enums ruby-on-rails activeadmin

undefined method尝试获取ActiveAdmin表单以使用基于对象的枚举属性的键的选择框时,我仍然收到错误消息。在堆栈溢出后按照建议的方法为枚举配置活动管理表单似乎使我半途而废,尽管我对象的引擎方面似乎通过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
Run Code Online (Sandbox Code Playgroud)

得到以下错误

undefined method `cover_type' for #<Class:0x007fe685217af0>
Run Code Online (Sandbox Code Playgroud)

这是完整的堆栈跟踪

小智 7

我认为cover_type应该多元化。

f.input :cover_type, as: :select, collection:  BookStore::Book.cover_types.keys
Run Code Online (Sandbox Code Playgroud)