Mongoid和simple_form,布尔类型不会创建复选框

时间:2012-06-22 15:58:59

标签: ruby-on-rails-3 mongoid simple-form

我从mongoid和simple_form开始。如果我有一个型号:type =>布尔值并使用= f.input在(haml)视图中呈现它,它创建一个文本输入字段而不是复选框。

doc说布尔值映射到一个复选框,但我怀疑布尔值和布尔值的处理方式不同。

我可以添加:as =>布尔值到simple_form。

1)这是预期还是我做错了什么? 2)有没有办法添加布尔到simple_form的一般映射? 3)我应该为simple_form生成一个问题来纠正这个问题吗?

提前致谢。

2 个答案:

答案 0 :(得分:12)

不幸的是,simple_form目前不能与Mongoid“自动”工作。您必须指定as: :boolean

有迹象表明人们希望Mongoid整合,但我认为它还没有发生。那么,为什么不试一试呢?以下是问题跟踪器的一些相关票证:

答案 1 :(得分:0)

正如大卫所说,目前SimpleForm不支持​​Mongoid,但是你可以快速修补Mongoid :: Document,使它们很好地播放:

module Mongoid
  module Document
    ARFakeColumn = Struct.new(:type, :limit, :number?)

    def column_for_attribute(attribute_name)
      attribute_name = attribute_name.to_s
      column_name = aliased_fields[attribute_name] || attribute_name
      if fields[column_name] && fields[column_name].options[:type] == Mongoid::Boolean
        ARFakeColumn.new(:boolean, 100)
      else
        ARFakeColumn.new(:string, 100)
      end
    end
  end
end