2012-04-02 2 views
20

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

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

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

ответ

50

Если вы хотите их рядный , вам необходимо предоставить ярлыки inline class: :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 + самозагрузки, поскольку самозагрузки уже имеет стили, определенные при выдаче лейбла класса инлайн. Вы должны иметь возможность использовать мой пример, но при создании пользовательского css вам просто потребуется больше работы.

+0

@ trev9065 Я добавил пример моего ответа, используя ваш код, вы можете попробовать это и посмотреть, работает ли он? – flynfish

+0

спасибо, что сработало! Есть ли вероятность, что один из них выбран по умолчанию? – trev9065

+0

yep, я обновил ответ. Добавьте ': checked => true' – flynfish

1

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

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) 
+0

Я попробовал его с ': стиль =>" Дисплей: встроенный ",: default => true", но это не сработало. Я также попробовал ': html_options => {: style =>" display: inline "}' без результата. Он даже не отображается в источнике. – trev9065

+0

Я получаю ту же проблему trev9065. Вы нашли решение? – Mel

1

Этот ответ, возможно, не сработал, потому что я не использую Bootstrap. Но есть и другие способы. Я ударил 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. ;)

2

Используя Простую форму с 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 
0

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

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

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

+0

Может быть, он удалился, но используя 'as: 'radio'', я получил ошибку« Ошибка ввода для радио ». –

+0

Ах, я считаю, что это «radio_buttons». Обновленный ответ, сообщите нам, если это сработает. Извините за путаницу. – Ben

0

Просто для кого-то, кто, используя фундамент zurb с чекбокса простой формы пришли сюда:

стройный вид:

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

СКС:

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