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

时间:2015-08-18 18:01:20

标签: ruby-on-rails enums activeadmin

在尝试获取ActiveAdmin表单以使用基于对象的枚举属性的键的选择框时,我仍然遇到undefined method错误。关于堆栈溢出到configure active admin forms for enums 的建议方法似乎让我走了一半虽然我的对象的引擎方面似乎通过NoMethodError异常使enum属性。

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

2 个答案:

答案 0 :(得分:6)

我认为cover_type应该是多元化的。

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

答案 1 :(得分:1)

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

您可以使用enumerize gemactiveadmin addons来很好地处理枚举。