Module: ActionView::Helpers::FormHelper
- Defined in:
- lib/action_view/helpers/form_helper.rb
Overview
Provides a set of methods for working with forms and especially forms related to objects assigned to the template. The following is an example of a complete form for a person object that works for both creates and updates built with all the form helpers. The @person
object was assigned by an action on the controller:
<form action="save_person" method="post">
Name:
<%= text_field "person", "name", "size" => 20 %>
Password:
<%= password_field "person", "password", "maxsize" => 20 %>
Single?:
<%= check_box "person", "single" %>
Description:
<%= text_area "person", "description", "cols" => 20 %>
<input type="submit" value="Save">
</form>
…is compiled to:
<form action="save_person" method="post">
Name:
<input type="text" id="person_name" name="person[name]"
size="20" value="<%= @person.name %>" />
Password:
<input type="password" id="person_password" name="person[password]"
size="20" maxsize="20" value="<%= @person.password %>" />
Single?:
<input type="checkbox" id="person_single" name="person[single] value="1" />
Description:
<textarea cols="20" rows="40" id="person_description" name="person[description]">
<%= @person.description %>
</textarea>
<input type="submit" value="Save">
</form>
There’s also methods for helping to build form tags in classes/ActionView/Helpers/FormOptionsHelper.html, classes/ActionView/Helpers/DateHelper.html, and classes/ActionView/Helpers/ActiveRecordHelper.html
Instance Method Summary collapse
-
#check_box(object, method, options = {}, checked_value = "1", unchecked_value = "0") ⇒ Object
Returns a checkbox tag tailored for accessing a specified attribute (identified by
method
) on an object assigned to the template (identified byobject
). -
#hidden_field(object, method, options = {}) ⇒ Object
Works just like text_field, but returns a input tag of the “hidden” type instead.
-
#password_field(object, method, options = {}) ⇒ Object
Works just like text_field, but returns a input tag of the “password” type instead.
-
#radio_button(object, method, tag_value, options = {}) ⇒ Object
Returns a radio button tag for accessing a specified attribute (identified by
method
) on an object assigned to the template (identified byobject
). -
#text_area(object, method, options = {}) ⇒ Object
Returns a textarea opening and closing tag set tailored for accessing a specified attribute (identified by
method
) on an object assigned to the template (identified byobject
). -
#text_field(object, method, options = {}) ⇒ Object
Returns an input tag of the “text” type tailored for accessing a specified attribute (identified by
method
) on an object assigned to the template (identified byobject
).
Instance Method Details
#check_box(object, method, options = {}, checked_value = "1", unchecked_value = "0") ⇒ Object
Returns a checkbox tag tailored for accessing a specified attribute (identified by method
) on an object assigned to the template (identified by object
). It’s intended that method
returns an integer and if that integer is above zero, then the checkbox is checked. Additional options on the input tag can be passed as a hash with options
. The checked_value
defaults to 1 while the default unchecked_value
is set to 0 which is convenient for boolean values. Usually unchecked checkboxes don’t post anything. We work around this problem by adding a hidden value with the same name as the checkbox.
Example (call, result). Imagine that @post.validated? returns 1:
check_box("post", "validated")
<input type="checkbox" id="post_validate" name="post[validated] value="1" checked="checked" />
<input name="post[validated]" type="hidden" value="0" />
Example (call, result). Imagine that @puppy.gooddog returns no:
check_box("puppy", "gooddog", {}, "yes", "no")
<input type="checkbox" id="puppy_gooddog" name="puppy[gooddog] value="yes" />
<input name="puppy[gooddog]" type="hidden" value="no" />
101 102 103 |
# File 'lib/action_view/helpers/form_helper.rb', line 101 def check_box(object, method, = {}, checked_value = "1", unchecked_value = "0") InstanceTag.new(object, method, self).to_check_box_tag(, checked_value, unchecked_value) end |
#hidden_field(object, method, options = {}) ⇒ Object
Works just like text_field, but returns a input tag of the “hidden” type instead.
68 69 70 |
# File 'lib/action_view/helpers/form_helper.rb', line 68 def hidden_field(object, method, = {}) InstanceTag.new(object, method, self).to_input_field_tag("hidden", ) end |
#password_field(object, method, options = {}) ⇒ Object
Works just like text_field, but returns a input tag of the “password” type instead.
63 64 65 |
# File 'lib/action_view/helpers/form_helper.rb', line 63 def password_field(object, method, = {}) InstanceTag.new(object, method, self).to_input_field_tag("password", ) end |
#radio_button(object, method, tag_value, options = {}) ⇒ Object
Returns a radio button tag for accessing a specified attribute (identified by method
) on an object assigned to the template (identified by object
). If the current value of method
is tag_value
the radio button will be checked. Additional options on the input tag can be passed as a hash with options
. Example (call, result). Imagine that @post.category returns “rails”:
radio_button("post", "category", "rails")
radio_button("post", "category", "java")
<input type="radio" id="post_category" name="post[category] value="rails" checked="checked" />
<input type="radio" id="post_category" name="post[category] value="java" />
115 116 117 |
# File 'lib/action_view/helpers/form_helper.rb', line 115 def (object, method, tag_value, = {}) InstanceTag.new(object, method, self).(tag_value, ) end |
#text_area(object, method, options = {}) ⇒ Object
Returns a textarea opening and closing tag set tailored for accessing a specified attribute (identified by method
) on an object assigned to the template (identified by object
). Additional options on the input tag can be passed as a hash with options
.
Example (call, result):
text_area("post", "body", "cols" => 20, "rows" => 40)
<textarea cols="20" rows="40" id="post_body" name="post[body]">
#{@post.body}
</textarea>
81 82 83 |
# File 'lib/action_view/helpers/form_helper.rb', line 81 def text_area(object, method, = {}) InstanceTag.new(object, method, self).to_text_area_tag() end |
#text_field(object, method, options = {}) ⇒ Object
Returns an input tag of the “text” type tailored for accessing a specified attribute (identified by method
) on an object assigned to the template (identified by object
). Additional options on the input tag can be passed as a hash with options
.
Examples (call, result):
text_field("post", "title", "size" => 20)
<input type="text" id="post_title" name="post[title]" size="20" value="#{@post.title}" />
58 59 60 |
# File 'lib/action_view/helpers/form_helper.rb', line 58 def text_field(object, method, = {}) InstanceTag.new(object, method, self).to_input_field_tag("text", ) end |