2012-06-22 13 views
15

Tôi bắt đầu với mongoid và simple_form. Nếu tôi có một mô hình với: type => Boolean và render nó trong một khung nhìn (haml) với = f.input, nó tạo ra một trường nhập văn bản không phải là một hộp kiểm.Mongoid và simple_form, loại Boolean không tạo hộp kiểm

Tài liệu nói rằng các bản đồ boolean vào một hộp kiểm nhưng tôi nghi ngờ rằng Boolean và boolean không được xử lý giống nhau.

Tôi có thể làm việc xung quanh bằng cách thêm: as => boolean vào simple_form.

1) Dự kiến ​​hay tôi đang làm điều gì đó sai? 2) Có cách nào để thêm ánh xạ chung của Boolean vào simple_form không? 3) Tôi có nên tạo một vấn đề cho simple_form để sửa lỗi này không?

Xin cảm ơn trước.

+1

Tôi không đồng ý với việc đóng câu hỏi này. Đây là một vấn đề thực sự. simple_form f.input không thể xử lý giá trị boolean và hiển thị hộp kiểm mong đợi. Simple_form hiển thị trường văn bản thay thế (với giá trị đúng hoặc sai). Khá khó chịu (đặc biệt là với một cái tên như simple_form ;-(. Nếu bạn sử dụng các trình trợ giúp biểu mẫu chuẩn thì nó hoạt động tốt. –

+2

Vì điều này đã bị đóng vì một số lý do. đầu vào: active,: label => false,: inline_label => "Active?",: as =>: boolean%> –

+0

Tôi nghĩ có lẽ người điều tiết đã đóng nó vì họ không nhận thấy rằng Boolean (đối tượng) không giống nhau như là boolean (nguyên thủy) và do đó nghĩ rằng nó không có ý nghĩa, có thể là –

Trả lời

12

Thật không may, simple_form hiện không hoạt động "tự động" với Mongoid. Bạn phải chỉ định as: :boolean.

Đã có dấu hiệu cho thấy mọi người muốn tích hợp Mongoid, nhưng tôi không nghĩ rằng điều đó đã xảy ra. Vì vậy, tại sao không cho nó một shot? Dưới đây là một số vé có liên quan từ theo dõi vấn đề:

0

Như David đề cập Mongoid không được hỗ trợ bởi SimpleForm tại thời điểm này nhưng bạn có thể nhanh chóng vá Mongoid: : Tài liệu để làm cho chúng phát độc đáo như vậy:

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