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: <form …>
<div class="field text_field">
<input type="text" name="user_first_name" ... />
</div>
</form>
If there an error on first name it will render: <form …>
<div class="field text_field error">
<input type="text" name="user_first_name" ... />
<em class='error'>First Name is required.</em>
</div>
</form>
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[:merb_form_fields][: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[:merb_form_fields][: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[:merb_form_fields][: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[:merb_form_fields][: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[:merb_form_fields][: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[:merb_form_fields][: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[:merb_form_fields][: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[:merb_form_fields][: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[:merb_form_fields][: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