aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_view/helpers/form_tag_helper.rb
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2005-02-19 12:49:14 +0000
committerDavid Heinemeier Hansson <david@loudthinking.com>2005-02-19 12:49:14 +0000
commit967339e4d324daa659e5f625d48a56dc17d5287e (patch)
treefb8caefc05b1bb604e49941c66890725ceedbd5c /actionpack/lib/action_view/helpers/form_tag_helper.rb
parentb6854c648bfb08d760f4adf860148783a0015dee (diff)
downloadrails-967339e4d324daa659e5f625d48a56dc17d5287e.tar.gz
rails-967339e4d324daa659e5f625d48a56dc17d5287e.tar.bz2
rails-967339e4d324daa659e5f625d48a56dc17d5287e.zip
Added FormTagHelper that 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.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@687 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'actionpack/lib/action_view/helpers/form_tag_helper.rb')
-rw-r--r--actionpack/lib/action_view/helpers/form_tag_helper.rb62
1 files changed, 62 insertions, 0 deletions
diff --git a/actionpack/lib/action_view/helpers/form_tag_helper.rb b/actionpack/lib/action_view/helpers/form_tag_helper.rb
new file mode 100644
index 0000000000..ba5fc39537
--- /dev/null
+++ b/actionpack/lib/action_view/helpers/form_tag_helper.rb
@@ -0,0 +1,62 @@
+require 'cgi'
+require File.dirname(__FILE__) + '/tag_helper'
+
+module ActionView
+ module Helpers
+ # 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.
+ module FormTagHelper
+ # Starts a form tag that points the action to an url configured with <tt>url_for_options</tt> just like
+ # ActionController::Base#url_for. The method for the form defaults to POST.
+ #
+ # Options:
+ # * <tt>:multipart</tt> - If set to true, the enctype is set to "multipart/form-data".
+ def form_tag(url_for_options = {}, options = {}, *parameters_for_url)
+ html_options = { "method" => "post" }.merge(options)
+
+ if html_options[:multipart]
+ html_options["enctype"] = "multipart/form-data"
+ html_options.delete(:multipart)
+ end
+
+ html_options["action"] = url_for(url_for_options, *parameters_for_url)
+
+ tag("form", html_options, true)
+ end
+
+ alias_method :start_form_tag, :form_tag
+
+ # Outputs "</form>"
+ def end_form_tag
+ "</form>"
+ end
+
+ def text_field_tag(name, value = nil, options = {})
+ tag("input", {"type" => "text", "name" => name, "id" => name, "value" => value}.update(options))
+ end
+
+ def password_field_tag(name = "password", value = nil, options = {})
+ tag("input", {"type" => "password", "name" => name, "id" => name, "value" => value}.update(options))
+ end
+
+ def text_area_tag(name, content = nil, options = {})
+ if options[:size]
+ options["cols"], options["rows"] = options[:size].split("x")
+ options.delete(:size)
+ end
+
+ content_tag("textarea", content, { "name" => name, "id" => name }.update(options))
+ end
+
+ def check_box_tag(name, value = "1", checked = false, options = {})
+ html_options = {"type" => "checkbox", "name" => name, "id" => name, "value" => value}.update(options)
+ html_options["checked"] = "checked" if checked
+ tag("input", html_options)
+ end
+
+ def submit_tag(value = "Save changes", options = {})
+ tag("input", {"type" => "submit", "name" => "submit", "value" => value}.update(options))
+ end
+ end
+ end
+end