Module: ActionView::Helpers::FormTagHelper

Defined in:
lib/action_view/helpers/form_tag_helper.rb

Overview

Provides a number of methods for creating form tags that doesn't rely on conventions with an object assigned to the template like FormHelper does. With the FormTagHelper, you provide the names and values yourself.

NOTE: The html options disabled, readonly, and multiple can all be treated as booleans. So specifying :disabled => true will give disabled="disabled".

Instance Method Summary collapse

Instance Method Details

#check_box_tag(name, value = "1", checked = false, options = {}) ⇒ Object

Creates a check box.


105
106
107
108
109
# File 'lib/action_view/helpers/form_tag_helper.rb', line 105

def check_box_tag(name, value = "1", checked = false, options = {})
  html_options = { "type" => "checkbox", "name" => name, "id" => name, "value" => value }.update(options.stringify_keys)
  html_options["checked"] = "checked" if checked
  tag :input, html_options
end

#end_form_tagObject

Outputs “</form>”


28
29
30
# File 'lib/action_view/helpers/form_tag_helper.rb', line 28

def end_form_tag
  "</form>"
end

#file_field_tag(name, options = {}) ⇒ Object

Creates a file upload field.

If you are using file uploads then you will also need to set the multipart option for the form:

<%= form_tag { :action => "post" }, { :multipart => true } %>
  <label for="file">File to Upload</label> <%= file_field_tag "file" %>
  <%= submit_tag %>
<%= end_form_tag %>

The specified URL will then be passed a File object containing the selected file, or if the field was left blank, a StringIO object.


77
78
79
# File 'lib/action_view/helpers/form_tag_helper.rb', line 77

def file_field_tag(name, options = {})
  text_field_tag(name, nil, options.update("type" => "file"))
end

#form_tag(url_for_options = {}, options = {}, *parameters_for_url, &proc) ⇒ Object Also known as: start_form_tag

Starts a form tag that points the action to an url configured with url_for_options just like ActionController::Base#url_for. The method for the form defaults to POST.

Options:

  • :multipart - If set to true, the enctype is set to “multipart/form-data”.

  • :method - The method to use when submitting the form, usually either “get” or “post”.


18
19
20
21
22
23
# File 'lib/action_view/helpers/form_tag_helper.rb', line 18

def form_tag(url_for_options = {}, options = {}, *parameters_for_url, &proc)
  html_options = { "method" => "post" }.merge(options.stringify_keys)
  html_options["enctype"] = "multipart/form-data" if html_options.delete("multipart")
  html_options["action"] = url_for(url_for_options, *parameters_for_url)
  tag :form, html_options, true
end

#hidden_field_tag(name, value = nil, options = {}) ⇒ Object

Creates a hidden field.

Takes the same options as text_field_tag


63
64
65
# File 'lib/action_view/helpers/form_tag_helper.rb', line 63

def hidden_field_tag(name, value = nil, options = {})
  text_field_tag(name, value, options.stringify_keys.update("type" => "hidden"))
end

#image_submit_tag(source, options = {}) ⇒ Object

Displays an image which when clicked will submit the form.

source is passed to AssetTagHelper#image_path


133
134
135
# File 'lib/action_view/helpers/form_tag_helper.rb', line 133

def image_submit_tag(source, options = {})
  tag :input, { "type" => "image", "src" => image_path(source) }.update(options.stringify_keys)
end

#password_field_tag(name = "password", value = nil, options = {}) ⇒ Object

Creates a password field.

Takes the same options as text_field_tag


84
85
86
# File 'lib/action_view/helpers/form_tag_helper.rb', line 84

def password_field_tag(name = "password", value = nil, options = {})
  text_field_tag(name, value, options.update("type" => "password"))
end

#radio_button_tag(name, value, checked = false, options = {}) ⇒ Object

Creates a radio button.


112
113
114
115
116
# File 'lib/action_view/helpers/form_tag_helper.rb', line 112

def radio_button_tag(name, value, checked = false, options = {})
  html_options = { "type" => "radio", "name" => name, "id" => name, "value" => value }.update(options.stringify_keys)
  html_options["checked"] = "checked" if checked
  tag :input, html_options
end

#select_tag(name, option_tags = nil, options = {}) ⇒ Object

Creates a dropdown selection box, or if the :multiple option is set to true, a multiple choice selection box.

Helpers::FormOptions can be used to create common select boxes such as countries, time zones, or associated records.

option_tags is a string containing the option tags for the select box:

# Outputs <select id="people" name="people"><option>David</option></select>
select_tag "people", "<option>David</option>"

Options:

  • :multiple - If set to true the selection will allow multiple choices.


44
45
46
# File 'lib/action_view/helpers/form_tag_helper.rb', line 44

def select_tag(name, option_tags = nil, options = {})
   :select, option_tags, { "name" => name, "id" => name }.update(options.stringify_keys)
end

#submit_tag(value = "Save changes", options = {}) ⇒ Object

Creates a submit button with the text value as the caption. If options contains a pair with the key of “disable_with”, then the value will be used to rename a disabled version of the submit button.


120
121
122
123
124
125
126
127
128
# File 'lib/action_view/helpers/form_tag_helper.rb', line 120

def submit_tag(value = "Save changes", options = {})
  options.stringify_keys!
  
  if disable_with = options.delete("disable_with")
    options["onclick"] = "this.disabled=true;this.value='#{disable_with}';this.form.submit();#{options["onclick"]}"
  end
    
  tag :input, { "type" => "submit", "name" => "commit", "value" => value }.update(options.stringify_keys)
end

#text_area_tag(name, content = nil, options = {}) ⇒ Object

Creates a text input area.

Options:

  • :size - A string specifying the dimensions of the textarea.

    # Outputs <textarea name="body" id="body" cols="25" rows="10"></textarea>
    <%= text_area_tag "body", nil, :size => "25x10" %>
    

94
95
96
97
98
99
100
101
102
# File 'lib/action_view/helpers/form_tag_helper.rb', line 94

def text_area_tag(name, content = nil, options = {})
  options.stringify_keys!

  if size = options.delete("size")
    options["cols"], options["rows"] = size.split("x")
  end

   :textarea, content, { "name" => name, "id" => name }.update(options.stringify_keys)
end

#text_field_tag(name, value = nil, options = {}) ⇒ Object

Creates a standard text field.

Options:

  • :disabled - If set to true, the user will not be able to use this input.

  • :size - The number of visible characters that will fit in the input.

  • :maxlength - The maximum number of characters that the browser will allow the user to enter.

A hash of standard HTML options for the tag.


56
57
58
# File 'lib/action_view/helpers/form_tag_helper.rb', line 56

def text_field_tag(name, value = nil, options = {})
  tag :input, { "type" => "text", "name" => name, "id" => name, "value" => value }.update(options.stringify_keys)
end