Подтвердить что ты не робот

Simple_form_for rails переключатель в линию

Я пытаюсь заставить свои кнопки отображать встроенные и также иметь значение по умолчанию, потому что оно не может быть пустым. Я использую useplataformatex/simple_form и bootstrap.

= 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>

Еще одно замечание о том, что значение по умолчанию все еще не работает.

4b9b3361

Ответ 1

Если вы хотите, чтобы они были встроенными, вам нужно дать ярлыкам встроенный класс: :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

EDIT: Я только понял, что мой ответ более специфичен для simple_form + bootstrap, так как bootstrap уже имеет стили, определенные при предоставлении ярлыку встроенного класса. Вы должны иметь возможность использовать мой пример, но для создания вашего пользовательского css просто потребуется еще немного работы.

Ответ 2

Используя Simple Form с 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

Ответ 3

Вы можете попробовать

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)

Ответ 4

Вышеприведенный ответ, возможно, не сработал, потому что я не использую Bootstrap. Но есть и другие способы. Я ударил div с помощью class= "радиокнопки" вокруг кнопок и метки вручную. Затем я добавил это в мою таблицу стилей (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.;)

Ответ 5

Простое решение:

Добавить класс в обертку элемента. Этот класс может быть любым, что вы выберете. Я использую "inline" в приведенном ниже примере:

form.input :my_field, as: 'radio_buttons' wrapper_html: {class: 'inline'}

Затем определите CSS, который применим только к группам переключателей (и только фактические переключатели, а не метка элемента):

input.radio_buttons.inline label.radio{
  display: inline-block;
}

Вот пример того, что это дает:

The above yields this result

Ответ 6

Просто для тех, кто использует базу zurb с простой формой chekbox, пришел сюда:

slim view:

= f.input :company_stages, as: :check_boxes, required: true

СКС:

// simple-form checbox
.checkbox {
    margin-right: 20px;
    display: inline-block;
}