J'essaie d'afficher mes boutons en ligne et d'avoir une valeur par défaut, car ils ne peuvent pas être vides. J'utiliseplataformatex/simple_form et bootstrap.
= f.collection_radio_buttons :is_private, [[true, 'Private'], [false, 'Public']], :first, :last, style: "display:inline", default: true
C'est rendre ceci:
<span>
<input id="workout_is_private_true" name="workout[is_private]" type="radio" value="true" />
<label class="collection_radio_buttons" for="workout_is_private_true">Private</label>
</span>
<span>
<input id="workout_is_private_false" name="workout[is_private]" type="radio" value="false" />
<label class="collection_radio_buttons" for="workout_is_private_false">Public</label>
</span>
Il est clair que le style:
ne fonctionne pas correctement mais je ne suis pas sûr de ce qui fonctionnera.
Suite à une autre suggestion, j'ai ajouté
.radio_buttons { display:inline; }
= f.collection_radio_buttons :is_private, [[true, 'Private'], [false, 'Public']], :first, :last, :item_wrapper_class => 'radio_buttons', :default => true
Et j'ai:
<span class="radio_buttons">
<input id="workout_is_private_true" name="workout[is_private]" type="radio" value="true" />
<label class="collection_radio_buttons" for="workout_is_private_true">Private</label>
</span>
<span class="radio_buttons">
<input id="workout_is_private_false" name="workout[is_private]" type="radio" value="false" />
<label class="collection_radio_buttons" for="workout_is_private_false">Public</label>
</span>
Juste une autre note que la valeur par défaut ne fonctionne toujours pas.
Si vous voulez les insérer en ligne, vous devez donner aux étiquettes la classe en-ligne en faisant ceci: :item_wrapper_class => 'inline'
Voici un exemple utilisant votre code:
= f.input :is_private,
:collection => [[true, 'Private'], [false, 'Public']],
:label_method => :last,
:value_method => :first,
:as => :radio_buttons,
:item_wrapper_class => 'inline',
:checked => true
EDIT: Je viens de me rendre compte que ma réponse était plus spécifique à simple_form + bootstrap, car bootstrap a déjà des styles définis lors de l'attribution de la classe inline à l'étiquette. Vous devriez être capable d’utiliser mon exemple, il vous faudra travailler davantage pour créer votre css personnalisé.
Tu peux essayer
f.collection_radio_buttons :options, [[true, 'Yes'] ,[false, 'No']], :first, :last ,:style =>"display:inline", :default => true
Vous ne savez pas trop quelle gemme vous utilisez pour un formulaire simple, mais ceci est la source ou une référence sur laquelle vous pouvez essayer
collection_radio_buttons(object, method, collection, value_method, text_method, options = {}, html_options = {}, &block)
En utilisant Simple Form avec Bootstrap 3, vous pouvez utiliser la classe radio
avec les options item_wrapper_class
et item_wrapper_tag
.
= f.collection_radio_buttons :sort, [[foo,bar],[foo,bar],
:first, :last,
item_wrapper_class: :radio,
item_wrapper_tag: :div
La réponse ci-dessus n'a peut-être pas fonctionné car je n'utilise pas Bootstrap. Mais il y a d'autres moyens. J'ai giflé un div avec class = "radio-buttons" autour des boutons et étiqueter manuellement. Ensuite, j'ai ajouté ceci à ma feuille de style (SASS):
.radio-buttons {
margin: .5em 0;
span input {
float: left;
margin-right: .25em;
margin-top: -.25em;
}
#this grabs the MAIN label only for my radio buttons
#since the data type for the table column is string--yours may be different
label.string {
margin-bottom: .5em !important;
}
clear: both;
}
.form-block {
clear: both;
margin-top: .5em;
}
.radio-buttons span {
clear: both;
display:block;
}
Cela rendra les boutons radio en ligne sur TOUS les frameworks, bien que cela ait été modifié pour donner le meilleur à la Fondation Zurb. ;)
Ajouter une classe à l'emballage de l'élément . Cette classe peut être celle que vous choisissiez. J'utilise 'inline' dans l'exemple ci-dessous:
form.input :my_field, as: 'radio_buttons' wrapper_html: {class: 'inline'}
Ensuite, définissez des CSS qui ne s'appliquent qu'aux groupes de boutons radio (et uniquement aux boutons radio actuels, pas à l'étiquette de l'article):
input.radio_buttons.inline label.radio{
display: inline-block;
}
Voici un exemple de ce que cela donne:
Juste pour quelqu'un qui utilise zurb foundation avec une simple case à cocher est venu ici:
vue mince:
= f.input :company_stages, as: :check_boxes, required: true
scss:
// simple-form checbox
.checkbox {
margin-right: 20px;
display: inline-block;
}