Tengo lo siguiente en el archivo ruby html.erb
<div class="hidden" id="contractor-group"> <%= f.check_box :contractor, id: 'int_contractor_check'%> <label for="contractor">Internal Contractor</label> </div> function enableContractor() { var type = $('#company-type').val(); if (type == 'INTERNAL') { $('#contractor-group').removeClass('hidden') $('#int_contractor_check').prop('checked', false); } else { $('#int_contractor_check').prop('checked', false); $('#contractor-group').addClass('hidden') } }Un cambio desplegable a INTERNO alterna la casilla de verificación oculta/mostrada
id: "company-type", onchange: "enableContractor()", En la carga útil obtengo entradas dobles de contratistas. ¿Alguna idea de lo que estoy haciendo mal? 
No hay nada malo aquí. Para las casillas de verificación, Rails crea un campo oculto con valor 0 (puede verificarlo en el html generado). Es necesario que el valor de la casilla de verificación b/c se envíe solo cuando la casilla de verificación está marcada. Entonces, para evitar que no se envíe nada, cuando no está marcado, necesitamos esta entrada oculta. Al analizarlo en el servidor, Rails sobrescribirá 0 con el valor más reciente ( 1 ) Ver documentos
Reduje el código a lo siguiente y ahora funciona bien. Usar true y false era mejor usarlo en el lado del servidor de todos modos. No estoy seguro de por qué el servidor nunca usó el valor 1,
Gracias @faron por el enlace, algo que no sabía.
<div class="hidden" id="contractor-group"> <%= f.check_box :contractor, { checked: false }, true, false %> <b> Internal Contractor </b> </div>