Search code examples
ruby-on-railsformtastic

add formtastic-bootstrap styles to formtastic 3


I have an input that looks like this:

<%= f.input :email %>

The output I get from formtastic(v3.1.5) and rails(v4.2) looks like this.

<li class="email input required stringish" id="applicant_email_input">
  <label for="applicant_email" class="label">Email<abbr title="required">*</abbr></label>
  <input maxlength="255" id="applicant_email" type="email" value="davedave@gmail.com" name="applicant[email]">
</li>

What I really want is for formtastic to emit:

<div class="email input required stringish form-group" id="applicant_email_input">
  <label for="applicant_email" class=" control-label">Email<abbr title="required">*</abbr></label>
  <span class="form-wrapper">
    <input maxlength="255" id="applicant_email" type="email" value="davedave@gmail.com" name="applicant[email]" class="form-control">
  </span>
</div>

This is what this app emmitted with formtastic(v2.3.1) and formtastic-bootstrap(v3.0.0) and rails(v4.1).

I'd love to just include the gem for formtastic-bootstrap and get that old behavior back, but near as I can tell, formtastic-bootstrap dropped out around formtastic 3.

Now I have an app with a couple thousand calls to f.input, and I need to massage the output coming from formtastic. What's the best way to do that?


Solution

  • Here is a hacked version of formtastic I have named boomtastic which will do what you want.

    (This actually includes all that you require except for the form-wrapper. However, the form-wrapper seems to be an element of bootstrap-formtastic only and not part of formtastic or standard bootstrap. If you really want to have the <span class="form-wrapper">, I think you can add this by editing boomtastic/lib/formtastic/inputs/base/wrapping.rb.)