GOV.UK Design System Form Builder for Rails
What's included
- 100% compatibility with the GOV.UK Design System
- Full control of labels, hints, fieldsets and legends
- No overwriting of Rails' default form helpers
- Automatic ARIA associations between hints, errors and inputs
- Most helpers take a block for arbitrary content
- Additional params for programmatically adding hints to check box and radio button collections
- No external dependencies
Installation
You can install the form builder gem by running the gem install
govuk_design_system_formbuilder
or by adding the following line
to your Gemfile
gem 'govuk_design_system_formbuilder'
Setup
To use the form builder in an ad hoc basis you can specify it
as an argument to form_for
= form_for @some_object, builder: GOVUKDesignSystemFormBuilder::FormBuilder do |f|
To set it globally, just add this to your ApplicationController
class ApplicationController < ActionController::Base
default_form_builder GOVUKDesignSystemFormBuilder::FormBuilder
end
Now we can get started! 🎉
= form_for @person do |f|
= f.govuk_text_field :full_name, label: { text: 'Your full name' }
= f.govuk_number_field :age, label: { text: 'Age' }
= f.govuk_collection_select :department_id,
@departments,
:id,
:name,
:description,
label: { text: 'Which department do you work for?' },
hint_text: "If you don't know ask your manager" }
= f.govuk_submit 'Away we go!'
Developing and running the tests
The form builder is covered by RSpec, to run all the tests first ensure that all of the development and testing prerequisite gems are installed. At the root of a freshly-cloned repo run
bundle
Now, if everything was successful, run RSpec
rspec -fd
Thanks
This project was inspired by MoJ's GovukElementsFormBuilder, but tackles some problems in a different manner. It provides the following advantages by providing:
- no reliance on a custom proxy/block buffer
- idiomatic Ruby
- a modular codebase
- a more-robust test suite