ボタンをインラインで表示し、空白にすることはできないため、デフォルト値を設定しようとしています。私はplataformatex/simple_formとブートストラップを使用しています。
= f.collection_radio_buttons :is_private, [[true, 'Private'], [false, 'Public']], :first, :last, style: "display:inline", default: true
これをレンダリングしています:
<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>
style:
は適切に機能していませんが、何が機能するかわかりません。
追加した別の提案に従って
.radio_buttons { display:inline; }
= f.collection_radio_buttons :is_private, [[true, 'Private'], [false, 'Public']], :first, :last, :item_wrapper_class => 'radio_buttons', :default => true
そして得た:
<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>
デフォルト値がまだ機能していないことに注意してください。
インラインにする場合は、次のようにしてラベルにインラインクラスを与える必要があります::item_wrapper_class => 'inline'
コードを使用した例を次に示します。
= f.input :is_private,
:collection => [[true, 'Private'], [false, 'Public']],
:label_method => :last,
:value_method => :first,
:as => :radio_buttons,
:item_wrapper_class => 'inline',
:checked => true
編集: bootstrapには、ラベルのインラインクラスを指定するときにすでにスタイルが定義されているため、私の答えはsimple_form +ブートストラップにより具体的であることがわかりました。ただし、私の例を使用するには、カスタムCSSを作成するためにもう少し作業が必要になります。
あなたが試すことができます
f.collection_radio_buttons :options, [[true, 'Yes'] ,[false, 'No']], :first, :last ,:style =>"display:inline", :default => true
あなたがシンプルなフォームにどの宝石を使用するかはそれほどわかりませんが、これはあなたが試すことができるソースまたはリファレンスです
collection_radio_buttons(object, method, collection, value_method, text_method, options = {}, html_options = {}, &block)
Bootstrap 3でシンプルなフォームを使用すると、radio
クラスをitem_wrapper_class
およびitem_wrapper_tag
オプション。
= f.collection_radio_buttons :sort, [[foo,bar],[foo,bar],
:first, :last,
item_wrapper_class: :radio,
item_wrapper_tag: :div
上記の回答は、Bootstrapを使用していないため機能しない場合があります。しかし、他の方法があります。ボタンの周りにclass = "radio-buttons"を付けてdivをたたき、手動でラベルを付けました。次に、これをスタイルシート(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;
}
これにより、すべてのフレームワークでラジオボタンがインラインになりますが、これはZurb Foundationに最適に見えるように調整されています。 ;)
アイテムラッパーにクラスを追加。このクラスは、任意のクラスにすることができます。以下の例では「インライン」を使用しています。
form.input :my_field, as: 'radio_buttons' wrapper_html: {class: 'inline'}
次に、CSSを定義しますこれは、ラジオボタングループにのみ適用されます(実際のラジオボタンのみで、アイテムラベルには適用されません)。
input.radio_buttons.inline label.radio{
display: inline-block;
}
これがもたらす結果の例を次に示します。
シンプルなフォームのチェックボックスでzurbファウンデーションを使用する人のためにここに来ました:
スリムビュー:
= f.input :company_stages, as: :check_boxes, required: true
scss:
// simple-form checbox
.checkbox {
margin-right: 20px;
display: inline-block;
}