简体   繁体   中英

Rails and Formtastic: how to display the label of the checkbox to the right?

I'm using Twitter Bootstrap.

I have the following code...

<div class="row">
  <div class="span5">
    <%= f.input :is_authorized_to_leave_with_child %>
    <%= f.input :is_emergency_contact %>
  </div>
  <div class="span5">
  </div>
</div>

The problem is, the label is displayed on the left and the checkbox to the right. Just the opposite on how Twitter Bootstrap sample form checkbox section look like, check it out: http://twitter.github.com/bootstrap/base-css.html#forms

The checkbox is in the right and the label is on the right. How can I display it like that?

As of formtastic 2.x , you could re-define the behavior of existing inputs using the app/inputs/#{ input_name.underscore }_input.rb file.

The default behavior of BooleanInput is: call to_html method, which calls label_with_nested_checkbox , which calls label_text_with_embedded_checkbox , which creates the following layout:

<label>
  <input />
</label>

and uses this logic:

check_box_html << "" << label_text

So, everything you need to do is just create a app/inputs/boolean_input.rb file with this code:

class BooleanInput < Formtastic::Inputs::BooleanInput
def label_text_with_embedded_checkbox
        label_text << "" << check_box_html
    end
end

And change an app/assets/formtastic-ie7.css file to make that input look a bit more pretty:

.formtastic .boolean label input {
    left:-4px;
}

Here's how it looks like:

在此输入图像描述

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM