The methods that come with the standard
ActionPack::Helpers::FormBuilder cover most cases of what you need to do but if you need to do something it doesn't have a method for, things can get a little ugly.
In my case I wanted to create a helper for autocompleted fields that all had the same attributes but different arguments (the urls).
data-autocomplete, normally when you wanted to have the field autocompleted, you would pass in the attribute to the form helper
f.text_field :username, :'data-autocomplete' => users_path(:json)
While there is nothing bad about doing this, you end with a bunch of
:'data-autocomplete' scattered about in your views which makes it harder to change down the road if you were to switch your JS implementation.
A nicer way is to have your own form builder method called
autocomplete_field which requires two arguments (
url) that adds the
:'data-autocomplete' option (which is now in one place and easily changed) for you. Best part is this can be done with only one helper file.