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