Last active
December 21, 2015 03:59
-
-
Save gonzalo-bulnes/6246474 to your computer and use it in GitHub Desktop.
A sweet transition from Bootstrap 2.3 to Bootstrap 3 using a Simple Form custom form builder.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# lib/custom_form_builder.rb | |
# See https://github.com/plataformatec/simple_form#custom-form-builder | |
class CustomFormBuilder < SimpleForm::FormBuilder | |
def input(attribute_name, options = {}, &block) | |
if options[:wrapper_html] | |
options[:wrapper_html].merge! class: 'form-group' | |
else | |
options[:wrapper_html] = { class: 'form-group' } | |
end | |
# inline checkboxes should not receive the .form-control class | |
unless [:remember_me].include? attribute_name | |
if options[:input_html] | |
options[:input_html].merge! class: 'form-control' | |
else | |
options[:input_html] = { class: 'form-control' } | |
end | |
end | |
if options[:hint_html] | |
options[:error_html].merge! class: 'help-block' | |
else | |
options[:error_html] = { class: 'help-block' } | |
end | |
super | |
end | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# app/views/devise/sessions/new.html.haml | |
# This example uses a standard Devise view to illustrate how the cstom_form_builder can be used | |
# to generate a Bootstrap 2.3 AND Bootstrap 3RC2 compatible markup. | |
.container | |
.row | |
.col-12.col-sm-12.col-lg-6.col-lg-offset-3 | |
%h1= t('titles.sign_in') | |
# Please do notice a custom form builder is in use here! | |
= custom_form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| | |
= f.error_notification | |
.form-inputs | |
= f.input :email, required: false, autofocus: true | |
= f.input :password, required: false | |
= f.input :remember_me, inline_label: t('activerecord.attributes.user.remember_me'), as: :boolean, label_html: { class: "visuallyhidden" } if devise_mapping.rememberable? | |
# I also added .form-group here, but this is not critical and YMMV | |
.form-actions.form-group | |
= f.button :submit, t('actions.log_in'), class: "btn btn-default" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# app/helpers/simple_form_extensions_helper.rb | |
# See https://github.com/plataformatec/simple_form#custom-form-builder | |
module SimpleFormExtensionsHelper | |
def custom_form_for(object, *args, &block) | |
options = args.extract_options! | |
simple_form_for(object, *(args << options.merge(builder: CustomFormBuilder)), &block) | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment