How to align input and label from collection_check_boxes?

戏子无情 提交于 2021-02-18 01:57:00

问题


I am using collection_check_boxes and have problems with aligning checkbox and text. This is my code:

<div class="col-md-4">
  <%= f.collection_check_boxes :dog_ids, Dog.all, :id, :name %>
</div>

Form is displayed like this:

[checkbox1]
  text1

[checkbox2]
  text2

[checkbox3]
  text3

I am trying to align input and label but didn't have success. I have seen these question but it don't work for me: Align checkboxes for f.collection_check_boxes with Simple_Form

I want to accomplish this:

[checkbox1] text1

[checkbox2] text2

[checkbox3] text3

Thank you for your help!


回答1:


The definition for collection_check_boxes:

collection_check_boxes(object, method, collection, value_method, text_method, options = {}, html_options = {}, &block)

The last argument permits you to do something like this: (this does exactly what you want using collection_check_boxes)

<%= f.collection_check_boxes(:dog_ids, Dog.all, :id, :name) do |b| %>
  <div class="row">
    <%= b.label(class: "check_box") do %>
      <div class="col-xs-4">
        <%= b.check_box(class: "check_box") %>
      </div>

      <div class="col-xs-8">
        <%= b.object.name %>
      </div>       
    <% end %>
  </div>
<% end %>

Read more about collection_check_boxes

There is another method too: style your checkbox input and your label from css.

For a better css specificity I will add a new class named 'checkbox-list' to:

<div class="col-md-4 checkbox-list">
  <%= f.collection_check_boxes :dog_ids, Dog.all, :id, :name %>
</div>

.checkbox-list input[type="checkbox"] {
  display: inline-block;
  width: 10%;
}

.checkbox-list input[type="checkbox"] + label {
  display: inline-block;
  margin-left: 10%;
  width: 80%;
}


来源:https://stackoverflow.com/questions/24109276/how-to-align-input-and-label-from-collection-check-boxes

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!