- Easily generate form fields and object information fields with labels.
- Maintain consistent form structure without lots of html overhead:
Using APG, this...
<% apg = AttributePairGenerator.new(foo) %>
<%= form_tag foo_path(foo.id), method: :put do -%>
<dl>
<%= apg.text_field(attr: :title, help: "the title of your foo") %>
<%= apg.date(attr: :starts_at) %>
<%= apg.plain_text(attr: :status) %>
</dl>
<% end %>
generates...
<form accept-charset="UTF-8" action="/foo" method="post">
<dl>
<dt>
<label for"title">title</label>
</dt>
<dd>
<input id="title" name="title" type="text" value="bar">
<span class="help-inline">the title of your foo</span>
</dd>
<dt>
<label for"starts_at">starts at</label>
</dt>
<dd>
<input class="datepicker" id="starts_at" name="starts_at" type="text" value="2013-10-30 05:00:00 +0000">
<span class="help-inline"></span>
</dd>
<dt>
<label for"status">status</label>
</dt>
<dd>
approved
<span class="help-inline"></span>
</dd>
</dl>
</form>
Add this line to your application's Gemfile:
gem 'attribute_pair_generator'
And then execute:
$ bundle
Or install it yourself as:
$ gem install attribute_pair_generator
- attr: using this option alone, you get the label to be a humanized version of the attr, and the value to be the attr called on the initialized object (if it exists)
- label: override the label
- value: override the value
- help: help text shown after the value
- field_options: pass in options to the
content_tag
for the main desired element (e.g. tag, input, textarea, checkbox) - dd_options: pass in options to the
content_tag
for the dd (value) - prefix: give a prefix to input elements' names and values
- disabled: disable the input element or link
apg.link(title: "foo", url: "http://example.com")
apg.plain_text(label: 'contract dates', value: date_field_range('contract', 'contract'))
apg.date(attr: :starts_at)
apg.select(attr: :lead_editor, value: editor_id, collection: [["Tom", 0], ["Dick", 1], ["Harry", 2]])
apg.checkbox(attr: :ops_complete, disabled: !can_mark_ops_complete?)
apg.text_field(attr: :long_title)
apg.text_field(prefix: 'tax', attr: :id, value: '', disabled: true)
apg.text_area(attr: :email_addresses, value: email_addresses.join("\n"), help: "Email addresses. One per line")
apg.radio(attr: :review_source, collection: [[nil, 'none'], 'Review Site'], dd_options: {class: 'horizontal-layout'})
- Andrew Thal [email protected]
- Jeff Whitmire [email protected]
Attribute Pair Generator is released under the MIT License.