2012-12-10 12 views
7

Ich habe eine Liste von 20+ Tags, die ich in einem 4-Spalten Checkbox-Gitter präsentieren möchte, aber ich bin mir nicht ganz sicher, was der sauberste Weg ist, es zu tun. Ich habe die folgende Form:Bootstrap + einfache Formular Checkbox Gitter

= simple_form_for(@fracture) do |f| 
    = f.error_notification  
    .form-inputs 
    = f.input :title 
    = f.input :summary 
    = f.input :tag_list, :as => :check_boxes, :collection => ActsAsTaggableOn::Tag.all.map(&:name), :item_wrapper_class => 'inline' 

Die resultierende Form so etwas wie diese http://jsfiddle.net/LVFzK/ sein soll, aber ich mag die Logik in einem wrapper oder CSS beschränkt haben, anstatt manuell die HTML ändern.

+0

Haben Sie schon eine Lösung gefunden? Vielen Dank! – noob

Antwort

4

Wenn Sie loswerden der <div class="controls span2"> Säulenelemente erhalten und die span2 Klasse zu den label Elemente hinzufügen, wird der label eine Reihe Breite haben und float links. Dadurch werden die Kontrollkästchen an einem Raster ausgerichtet.

<label class="checkbox span2"> 
    <input type="checkbox" value="option1"> Cash 
</label> 

Sie das Raster zwingen können durch Hinzufügen der span10 Klasse des Containerelement vier Säulen zu sein:

<div class="control-group span10"> 

jedoch, wird dies das Gitter dazu führen, Vorlauf links -> rechts und Erstellen Sie dann neue Zeilen, anstatt aufeinanderfolgende Elemente vertikal zu stapeln. Die einzige Möglichkeit, um Elemente vertikal gestapelt zu haben, ist die multi-column layout functionality. Ich habe das vorher nicht benutzt, und ich weiß nicht wirklich, wie gut es in den verschiedenen Browsern funktioniert.

Diese jsFiddle zeigt die beiden Ansätze mit jeweils entweder einer statischen Breite oder einer Fluidbreite.

+1

Vielen Dank für Ihre Antwort - das ist definitiv der Look, den ich anstrebe. Ich bin jedoch auf der Suche nach einer Lösung, die Simple_form-Wrapper verwendet, anstatt der serverseitigen Vorlage mehr HTML hinzuzufügen. – sguha

+0

Kein Problem. Mit der Verwendung von "simple_form wrappers" wollen Sie vermeiden, die 'span2' Klasse zu den'

+0

Das ist eine sehr saubere Lösung, aber ich suche nach etwas, das diese haml '= f.input: tag_list,: as =>: check_boxes,: sammlung => ActsAsTaggableOn :: Tag.all.map (&: name),: item_wrapper_class => 'inline'' und mit einer Art von [Custom Wrapper] (https://github.com/plataformatec/simple_form/wiki/Custom-Wrappers) fügen Sie die entsprechenden markup/css-Klassen hinzu, die gerendert werden die Kontrollkästchen in einem Raster. – sguha