merb_form_fields

A plugin for the Merb framework that provides a Form Builder that wraps each of your fields.

to install dependency "merb_form_fields"

It provides validation on the wrapper (adds a class), and will insert the error message automatically.

form_with_fields_for(@user) do

text_field :first_name

is equivalent to:

If there an error on first name it will render:

First Name is required.

Customize Fields with the :field option (takes a hash)

text_field :first_name, :field => => "my_field_class", :id => "field_id"

Customize the error message with the :error option (overrides the default model error)

text_field :first_name, :error => "Bzzzzt... wrong!"

Customize the note for the field

text_field :first_name, :note => "Give us your first name"

All render options are easily configurable via Merb::Plugins.config

Field Tag

Merb::Plugins.config[:field_tag] defaults to :div

this defines which tag is used for the field wrapper. 
e.g. <div class="field ...">...</div>
if you set it to :li, it would render as <li class="field ...">...</li>

Field Class

Merb::Plugins.config[:field_tag] defaults to "field"

this defines the class used by default for the field wrapper. 
e.g. <div class="field ...">...</div>
if you set it to "wrapper", it would render as <div class="wrapper ...">...</div>

Field Error Class

Merb::Plugins.config[:field_error_class] defaults to "error"

this defines the class used on the field wrapper when the field is invalid.
e.g. <div class="field error ...">...</div>
if you set it to "invalid", it would render as <div class="field invalid ...">...</div>

Note Tag

Merb::Plugins.config[:note_tag] defaults to :span

this defines which tag is used for the note wrapper. 
e.g. <span class="note">...</span>
if you set it to :em, it would render as <em class="note ...">...</em>

Note Class

Merb::Plugins.config[:note_class] defaults to "note"

this defines the class used by default for the note wrapper. 
e.g. <span class="note">...</span>
if you set it to "explain", it would render as <span class="explain">...</span>

Error Message Tag

Merb::Plugins.config[:error_message_tag] defaults to :em

this is the tag that is displayed inside the field. 
e.g. <em class='error'>First Name is required.</em>
If you set it to :span, it would display as <span class='error'>...</span>

Error Message Class

Merb::Plugins.config[:error_message_class] defaults to "error"

this is the class that is used for the error messages displayed inside a field. 
e.g. <em class='error'>First Name is required.</em>
If you set it to "invalid", it would display as <em class='invalid'>...</em>

Add Field Type Class Option

Merb::Plugins.config[:add_field_type_class?] defaults to true

if this option is enabled, it will add the field_type as a class to the field wrapper
e.g. <div class="field text_field ...">....</div>
if you set it to false, it would render without the field_type <div class="field ...">....</div>

Skipped Field Types

Merb::Plugins.config[:skipped_field_types] defaults to [:hidden_field, :check_box, :radio_button]

Field types defined in this list will not be wrapped with a field wrapper
You can force the field wrapper to show by passing :field => {:force => true} on your field
You can prevent the field wrapper from showing by passing :field => {:skip => true} on your field