2012-06-22 11 views
15

Sto iniziando con mongoid e simple_form. Se ho un modello con: type => Boolean e lo renderò in una vista (haml) con = f.input, crea un campo di input del testo, non una casella di controllo.Mongoid e simple_form, il tipo booleano non crea la casella di controllo

Il documento dice che le mappe booleane in una casella di controllo, ma sospetto che booleano e booleano non siano gestiti allo stesso modo.

Posso aggirare aggiungendo: as => boolean al simple_form.

1) È previsto o sto facendo qualcosa di sbagliato? 2) C'è un modo per aggiungere una mappatura generale di Boolean a simple_form? 3) Devo generare un problema per simple_form per correggere questo?

Grazie in anticipo.

+1

Non sono d'accordo con la chiusura di questa domanda. Questo è un vero problema. simple_form f.input non può gestire un valore booleano e rendere la casella di controllo prevista. Simple_form rende invece un campo di testo (con valore vero o falso). Abbastanza fastidioso (specialmente con un nome come simple_form ;-(. Se si utilizzano gli helper standard per i rails funziona perfettamente. –

+2

Poiché questo è stato chiuso per qualche motivo. Ecco cosa ho fatto. Spero che sia d'aiuto. <% = F. input: active,: label => false,: inline_label => "Attivo?",: as =>: booleano%> –

+0

Penso che forse il moderatore lo abbia chiuso perché non si era accorto che Boolean (l'oggetto) non è lo stesso come booleano (il primitivo) e quindi pensavo che non avesse senso Forse –

risposta

0

Come David menzionato Mongoid non è supportato da SimpleForm in questo momento, ma è possibile correggere rapidamente Mongoid: : Documento per farli suonare bene in questo modo:

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 
Problemi correlati