Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
70 lines (45 sloc) 1.95 KB
forms-fu
======================
this plugin is intended to help in creating forms. its featureset will grow in the near future. for now it can do this:
* adds a required_field?(field_name) method to all the activerecord models. this allows you to automatically mark required fields in a form with a *. required fields are determined automatically from the validates_* calls in the class.
* there is a helper method available in the views that prints out the label for a field with our without star
* a TabularForumBuilder class which can be used with the form_for rails helper. It automatically wraps all form fields in table rows and cells.
Examples
=======
# user.rb
class User < ActiveRecord::Base
validates_presence_of :name
validates_confirmation_of :password
validates_acceptance_of :terms
required_fields << [:login] # in case you want to mark additional fields as required
end
User.required_field?(:name) # => true
User.required_field?(:login) # => true
User.required_field?(:password_confirmation) # => true
User.required_field?(:terms) # => true
User.required_field?(:email) # => false
# users/new.html.erb
<%= label_fu @user, :name %> # => <label for="user_name">Name *</label>
<%= label_fu @user, :email %> # => <label for="user_email">Email</label>
# or with the form builder
<%- form_for :user, :builder => TabularFormBuilder do |f| -%>
<table>
<%= f.text_field :name %>
</table>
<%- end -%>
# prints out:
<form ...>
<table>
<tr>
<th><label for="user_name">Name: *</label></th>
<td><input name="user[name]" type="text"/></td>
</tr>
</table>
</form>
# some added sugar:
<%= f.text_fields :email, :name, :address %>
# call text_field for each of the attributes
<%= f.text_field_without_label :name %>
# prints out the input tag without the tr, td and label - in case you need more customization
For questions, patches etc. contact alex[at]upstream-berlin.com
Copyright (c) 2008 Alexander Lang, released under the MIT license