2012-04-14 1 views
13

Sto usando Simple_form, twitter bootstrap, e Rails 3.2.2Uso dei tasti Toggle al posto di Caselle (Rotaie, Twitter Bootstrap, Simple_form)

Qualcuno sa se c'è un modo per utilizzare il tasto "Toggle "opzione per bootstrap su campi booleani in una semplice forma? Vorrei sostituire le caselle con i pulsanti.

Ecco quello che ho provato finora in forma (binari):

<%= f.input :client_approved, :input_html => { :class => 'btn btn-primary', :data => {:toggle => 'button'} } %> 

Ecco l'output HTML:

<input class="boolean optional btn btn-primary" data-toggle="button" id="id_card_design_client_approved" name="id_card_design[client_approved]" type="checkbox" value="1"> 

Tutte le idee su come assegnare un tag pulsante per l'input simple_form?

risposta

6

mi è venuta in mente un approccio basato JS ... Sono sicuro che non è il modo più bello di farlo, ma funziona ...

Nel file visualizzare, aggiungere qualcosa sulla falsariga di questo:

<div id="client_approved_buttons" class="btn-group" data-toggle="buttons-radio"> 
    <%= f.input : client_approved, as: :hidden %> 
    <a class="btn" data-value="1">Yes</a> 
    <a class="btn" data-value="0">No</a> 
</div> 

Poi nel file JS, aggiungere questo:

// make button toggles update hidden field 
$('.btn-group a').on('click', function(event){ 
    event.preventDefault(); 
    var input = $(this).siblings('.control-group').find('input[type=hidden]'); 
    if(input.length>0){ 
    if(input.val().toString() !== $(this).data('value').toString()){ 
     input.val($(this).data('value')).trigger('change'); 
    } 
    } 
}); 
+0

stavo considerando se usare JS per aggiornare i campi nascosti su presentare, ma mi piace questo approccio molto meglio. – joraff

+0

Tornando a questo progetto. Grazie per la risposta. Funziona come previsto ma il valore di 1 o 0 non viene assegnato. Quindi non salva correttamente. – prodigerati

+0

Vuoi dire che il campo nascosto viene aggiornato, ma Rails/your ORM non registra la modifica? –